import and export assets with zip folders

This commit is contained in:
cube
2026-05-28 12:52:29 +01:00
parent c973e4b83a
commit c70c4f2922
2 changed files with 26 additions and 3 deletions

View File

@@ -867,7 +867,6 @@ def export_system_full():
icons = db.execute("SELECT icon_location FROM icons").fetchall() icons = db.execute("SELECT icon_location FROM icons").fetchall()
blinkies = db.execute("SELECT blinkie_location FROM blinkies").fetchall() blinkies = db.execute("SELECT blinkie_location FROM blinkies").fetchall()
stamps = db.execute("SELECT stamp_location FROM stamps").fetchall() stamps = db.execute("SELECT stamp_location FROM stamps").fetchall()
misc = os.listdir(current_app.config["MISC_UPLOAD_FOLDER"])
data = {} data = {}
data["members"] = [] data["members"] = []
@@ -905,8 +904,6 @@ def export_system_full():
for stamp in stamps: for stamp in stamps:
sname = stamp[0] sname = stamp[0]
zipf.write(current_app.config["STAMPS_UPLOAD_FOLDER"] + "/" + sname) zipf.write(current_app.config["STAMPS_UPLOAD_FOLDER"] + "/" + sname)
#for misc_file in misc:
#zipf.write(current_app.config["MISC_UPLOAD_FOLDER"] + "/" + misc_file)
return send_file("static/tmp/"+zip_name, as_attachment=True) return send_file("static/tmp/"+zip_name, as_attachment=True)
@@ -947,6 +944,12 @@ def assets():
else: else:
file.save(os.path.join(current_app.config["MISC_UPLOAD_FOLDER"], fname+str(i)+"."+ftype)) file.save(os.path.join(current_app.config["MISC_UPLOAD_FOLDER"], fname+str(i)+"."+ftype))
if "images_zip" in request.files:
file = request.files["images_zip"]
with zipfile.ZipFile(file, "r") as zipf:
for f in zipf.namelist():
zipf.extract(f)
icons = db.execute("SELECT * FROM icons").fetchall() icons = db.execute("SELECT * FROM icons").fetchall()
icon_storage = os.listdir(current_app.config["ICON_UPLOAD_FOLDER"]) icon_storage = os.listdir(current_app.config["ICON_UPLOAD_FOLDER"])
@@ -1015,6 +1018,16 @@ def delete_misc(filename):
os.remove(os.path.join(current_app.config["MISC_UPLOAD_FOLDER"], filename)) os.remove(os.path.join(current_app.config["MISC_UPLOAD_FOLDER"], filename))
return redirect(url_for("manage.assets")) return redirect(url_for("manage.assets"))
@bp.route("/export/misc")
@login_required
def export_misc():
misc = os.listdir(current_app.config["MISC_UPLOAD_FOLDER"])
zip_name = "myriad_assets.zip"
zip_path = current_app.config["TMP_FOLDER"] + "/" + zip_name
with zipfile.ZipFile(zip_path, "w") as zipf:
for misc_file in misc:
zipf.write(current_app.config["MISC_UPLOAD_FOLDER"] + "/" + misc_file)
return send_file("static/tmp/"+zip_name, as_attachment=True)
# GROUPS # GROUPS

View File

@@ -71,6 +71,16 @@
</div> </div>
</div> </div>
<p><a href="{{ url_for('manage.export_misc') }}">Export all assets to zip</a></p>
<hr>
<p>Import assets from a zip folder</p>
<form method="post" enctype="multipart/form-data" id="images_zip">
<input type="file" name="images_zip" class="mobile-edit">
<input type="submit" value="Upload ZIP">
</form>
<script> <script>
function copyURL(a) { function copyURL(a) {
navigator.clipboard.writeText(a); navigator.clipboard.writeText(a);