working on imports and exports
This commit is contained in:
119
myriad/manage.py
119
myriad/manage.py
@@ -26,7 +26,7 @@ def new():
|
||||
|
||||
@bp.route("/import", methods=("GET","POST"))
|
||||
@login_required
|
||||
def import_member():
|
||||
def import_member_route():
|
||||
db = get_db()
|
||||
response=""
|
||||
data=None
|
||||
@@ -37,25 +37,7 @@ def import_member():
|
||||
file = request.files["file"]
|
||||
if file.filename.split(".")[1].lower() == "json":
|
||||
response = json.loads(file.read())
|
||||
|
||||
date_raw = response["date-created"].split(",")
|
||||
date = date_raw[0]
|
||||
day,month,year = date.split("/")
|
||||
time = date_raw[1]
|
||||
hour,minute,second = time.split(":")
|
||||
date_created = datetime.datetime(int(year), int(month), int(day), int(hour), int(minute), int(second))
|
||||
|
||||
user_id = g.user[0]
|
||||
|
||||
if response["privacy"] == "public":
|
||||
privacy = 1
|
||||
else:
|
||||
privacy = 0
|
||||
|
||||
data = [date_created, user_id, response["name"], response["description"], privacy]
|
||||
db.execute("INSERT INTO member (created,user_id, member_name, bio,public) VALUES (?, ?, ?, ?, ?)",(data[0], data[1], data[2], data[3], data[4]))
|
||||
db.commit()
|
||||
|
||||
import_member(response)
|
||||
last = db.execute('SELECT last_insert_rowid()').fetchone()
|
||||
mid = last[0]
|
||||
else:
|
||||
@@ -254,6 +236,81 @@ def remove_home(mid,location):
|
||||
else:
|
||||
return redirect(url_for('home.full_list'))
|
||||
|
||||
|
||||
def import_groups(groups):
|
||||
db = get_db()
|
||||
for group in groups:
|
||||
gid = group["id"]
|
||||
name = group["name"]
|
||||
description = group["description"]
|
||||
|
||||
if group["privacy"] == "public":
|
||||
privacy = 1
|
||||
else:
|
||||
privacy = 0
|
||||
|
||||
db.execute("INSERT INTO groups (id, group_name, group_description, public) VALUES (?, ?, ?, ?)", (gid, name, description, privacy))
|
||||
db.commit()
|
||||
|
||||
def import_member(member):
|
||||
db = get_db()
|
||||
|
||||
date_raw = member["date-created"].split(",")
|
||||
date = date_raw[0]
|
||||
day,month,year = date.split("/")
|
||||
time = date_raw[1]
|
||||
hour,minute,second = time.split(":")
|
||||
date_created = datetime.datetime(int(year), int(month), int(day), int(hour), int(minute), int(second))
|
||||
|
||||
name = member["name"]
|
||||
subtitle = member["subtitle"]
|
||||
description = member["description"]
|
||||
|
||||
if member["privacy"] == "public":
|
||||
privacy = 1
|
||||
else:
|
||||
privacy = 0
|
||||
|
||||
theme = member["theme"]
|
||||
|
||||
#db.execute("INSERT INTO member (created,user_id, member_name, bio,public) VALUES (?, ?, ?, ?, ?)",(data[0], data[1], data[2], data[3], data[4]))
|
||||
#db.commit()
|
||||
|
||||
|
||||
@bp.route("/admin", methods=("GET", "POST"))
|
||||
@login_required
|
||||
def admin():
|
||||
db = get_db()
|
||||
|
||||
if request.method == "POST":
|
||||
if "json" in request.files:
|
||||
file = request.files["json"].read()
|
||||
file_json = json.loads(file)
|
||||
|
||||
groups = file_json["groups"]
|
||||
import_groups(groups)
|
||||
|
||||
members = file_json["members"]
|
||||
|
||||
for member in members:
|
||||
import_member(member)
|
||||
|
||||
|
||||
return "<a href='/'>go home</a>"
|
||||
|
||||
elif "zip" in request.files:
|
||||
return "upload zip"
|
||||
|
||||
users = db.execute("SELECT * FROM user").fetchall()
|
||||
|
||||
return render_template("manage/admin.html", users=users)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# DATA EXPORTS
|
||||
|
||||
def generate_json(mid):
|
||||
@@ -295,6 +352,7 @@ def generate_json(mid):
|
||||
|
||||
|
||||
data = {
|
||||
"id":mid,
|
||||
"date-created":date_created,
|
||||
"date-format":"d/m/Y, H:M:S",
|
||||
"name":member[3],
|
||||
@@ -438,11 +496,10 @@ def export_system():
|
||||
groups_r = db.execute("SELECT * FROM groups").fetchall()
|
||||
|
||||
data = {}
|
||||
count = 0
|
||||
data["members"] = []
|
||||
for member in members:
|
||||
d = generate_json(member[0])
|
||||
data[count] = d
|
||||
count+=1
|
||||
data["members"].append(d)
|
||||
|
||||
groups = generate_json_groups()
|
||||
data["groups"] = groups
|
||||
@@ -464,11 +521,10 @@ def export_system_full():
|
||||
stamps = db.execute("SELECT stamp_location FROM stamps").fetchall()
|
||||
|
||||
data = {}
|
||||
count = 0
|
||||
data["members"] = []
|
||||
for member in members:
|
||||
d = generate_json(member[0])
|
||||
data[count] = d
|
||||
count+=1
|
||||
data["members"].append(d)
|
||||
|
||||
groups = generate_json_groups()
|
||||
data["groups"] = groups
|
||||
@@ -495,6 +551,8 @@ def export_system_full():
|
||||
return send_file("static/tmp/"+zip_name, as_attachment=True)
|
||||
|
||||
|
||||
|
||||
|
||||
# ASSETS
|
||||
|
||||
|
||||
@@ -617,10 +675,7 @@ def group_delete(gid):
|
||||
|
||||
return redirect(url_for("manage.groups"))
|
||||
|
||||
@bp.route("/admin")
|
||||
@login_required
|
||||
def admin():
|
||||
db = get_db()
|
||||
users = db.execute("SELECT * FROM user").fetchall()
|
||||
|
||||
return render_template("manage/admin.html", users=users)
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -12,8 +12,21 @@
|
||||
|
||||
<hr>
|
||||
|
||||
<a>Import system from JSON</a><br>
|
||||
<a>Import system from ZIP</a>
|
||||
<div class="heading">Import system from JSON</div>
|
||||
<p>You must only run full system imports on a fresh database</p>
|
||||
<form method="post" enctype="multipart/form-data" id="json">
|
||||
<input type="file" name="json">
|
||||
<input type="submit" value="Upload JSON">
|
||||
</form>
|
||||
|
||||
<hr>
|
||||
|
||||
<div class="heading">Import system from ZIP</div>
|
||||
<p>You must only run full system imports on a fresh database</p>
|
||||
<form method="post" enctype="multipart/form-data" id="zip">
|
||||
<input type="file" name="zip">
|
||||
<input type="submit" value="Upload ZIP">
|
||||
</form>
|
||||
|
||||
<hr>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user