roundabout,
created on Monday, 9 September 2024, 15:20:24 (1725895224),
received on Tuesday, 10 September 2024, 13:58:09 (1725976689)
Author identity: vlad <vlad.muntoiu@gmail.com>
e750d0b32bff7ffd47d845deb8593d190d292a7a
app.py
@@ -898,6 +898,40 @@ def gallery_remove_picture(id):
return flask.redirect("/gallery/" + str(gallery.id))
@app.route("/gallery/<int:id>/add-pictures-from-query", methods=["POST"])
def gallery_add_from_query(id):
gallery = db.session.get(Gallery, id)
if gallery is None:
flask.abort(404)
if "username" not in flask.session:
flask.abort(401)
if flask.session["username"] != gallery.owner_name and not current_user.admin and not UserInGallery.query.filter_by(user=current_user, gallery=gallery).first():
flask.abort(403)
query_yaml = flask.request.form.get("query", "")
yaml_parser = yaml.YAML()
query_data = yaml_parser.load(query_yaml) or {}
query = get_picture_query(query_data)
pictures = query.all()
count = 0
for picture in pictures:
if not PictureInGallery.query.filter_by(resource=picture, gallery=gallery).first():
db.session.add(PictureInGallery(picture, gallery))
count += 1
db.session.commit()
flask.flash(f"Added {count} pictures to the gallery")
return flask.redirect("/gallery/" + str(gallery.id))
@app.route("/gallery/<int:id>/users")
def gallery_users(id):
gallery = db.session.get(Gallery, id)
templates/gallery.html
@@ -14,6 +14,16 @@
<input name="picture_id" type="text" placeholder="Picture ID" required aria-label="Picture ID">
<button type="submit">Add picture</button>
</form>
<details>
<summary>Add from query</summary>
<form method="POST" action="/gallery/{{ gallery.id }}/add-pictures-from-query">
<label>
<span class="required-asterisk">Query YAML</span>
<textarea name="query" required rows="8"></textarea>
</label>
<button type="submit">Add pictures</button>
</form>
</details>
{% endif %}
<h2>Pictures</h2>
<ul class="thumbnail-list">