From a2c947ca007c54f2d3e8d3ca897bf6baa7540316 Mon Sep 17 00:00:00 2001 From: cube Date: Mon, 30 Mar 2026 14:01:00 +0100 Subject: [PATCH] working on imports and exports --- myriad/manage.py | 119 +++++++++++++++++++++-------- myriad/templates/manage/admin.html | 17 ++++- 2 files changed, 102 insertions(+), 34 deletions(-) diff --git a/myriad/manage.py b/myriad/manage.py index 204b107..576a736 100644 --- a/myriad/manage.py +++ b/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 "go home" + + 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) + + + diff --git a/myriad/templates/manage/admin.html b/myriad/templates/manage/admin.html index 3d09aa8..c3e1418 100644 --- a/myriad/templates/manage/admin.html +++ b/myriad/templates/manage/admin.html @@ -12,8 +12,21 @@
- Import system from JSON
- Import system from ZIP +
Import system from JSON
+

You must only run full system imports on a fresh database

+
+ + +
+ +
+ +
Import system from ZIP
+

You must only run full system imports on a fresh database

+
+ + +