roundabout,
created on Thursday, 5 September 2024, 11:17:30 (1725535050),
received on Thursday, 5 September 2024, 13:52:29 (1725544349)
Author identity: vlad <vlad.muntoiu@gmail.com>
1ac4e81abd1a4db4ef29d21a397acc0c37b6b28b
app.py
@@ -295,6 +295,10 @@ def profile(username):
@app.route("/upload") def upload(): if "username" not in flask.session: flask.flash("Log in to upload pictures.") return flask.redirect("/accounts")licences = Licence.query.order_by(Licence.free.desc(), Licence.pinned.desc(), Licence.title).all() return flask.render_template("upload.html", licences=licences)
@@ -305,11 +309,38 @@ def upload_post():
description = flask.request.form["description"] origin_url = flask.request.form["origin_url"] author = db.session.get(User, flask.session.get("username")) licence_ids = flask.request.form.getlist("licence") if author is None: flask.abort(401)file = flask.request.files["file"] if not file or not file.filename: flask.flash("No selected file")flask.flash("Select a file") return flask.redirect(flask.request.url) if not file.mimetype.startswith("image/"): flask.flash("Only images are supported") return flask.redirect(flask.request.url) if not title: flask.flash("Enter a title") return flask.redirect(flask.request.url) if not description: flask.flash("Enter a description") return flask.redirect(flask.request.url) print(licence_ids) if not licence_ids: flask.flash("Select licences") return flask.redirect(flask.request.url) licences = [db.session.get(Licence, licence_id) for licence_id in licence_ids] if not any(licence.free for licence in licences): flask.flash("Select at least one free licence")return flask.redirect(flask.request.url) resource = PictureResource(title, author, description, origin_url, ["CC0-1.0"], file.mimetype)
@@ -317,6 +348,8 @@ def upload_post():
db.session.commit() file.save(path.join(config.DATA_PATH, "pictures", str(resource.id))) flask.flash("Picture uploaded successfully") return flask.redirect("/picture/" + str(resource.id))
static/efficient-ui
@@ -1 +1 @@
Subproject commit 475381868136b3cb05e333950cd523f633ce501dSubproject commit de68efc82aa23ebb7a5f007af0f393167e2c4105
static/style.css
@@ -264,3 +264,8 @@ iconify-icon {
grid-template-columns: auto 1fr; align-items: center; } .required-asterisk::after { content: "*"; color: var(--color-error); }
templates/upload.html
@@ -5,19 +5,20 @@
<form method="POST" class="vbox" enctype="multipart/form-data"> <h2>Upload</h2> <label> Name<span class="required-asterisk">Title</span><input type="text" name="title" required> </label> <label> Description<span class="required-asterisk">Description</span><textarea name="description" required></textarea> </label> <label> Origin URL <input type="url" name="origin_url" required><input type="url" name="origin_url"> Can be left blank if not applicable.</label> <x-vbox> Licence<span class="required-asterisk">Licences</span><div class="multi-select" style="height: clamp(320px, 50vh, 640px)"> {% for licence in licences %} <div class="licence-selection">
@@ -67,7 +68,7 @@
</div> </x-vbox> <label> File<span class="required-asterisk">File</span><input type="file" name="file" required> </label> <button type="submit">Upload</button>