roundabout,
created on Sunday, 8 September 2024, 10:48:01 (1725792481),
received on Sunday, 8 September 2024, 10:58:33 (1725793113)
Author identity: vlad <vlad.muntoiu@gmail.com>
0c597c146bef0c460c1d1679a2d1b41f6e886785
app.py
@@ -560,6 +560,48 @@ def delete_picture(id):
return flask.redirect("/") @app.route("/picture/<int:id>/mark-replacement", methods=["POST"]) def mark_replacement(id): resource = db.session.get(PictureResource, id) if resource is None: flask.abort(404) current_user = db.session.get(User, flask.session.get("username")) if current_user is None: flask.abort(401) if resource.copied_from.author != current_user and not current_user.admin: flask.abort(403) resource.copied_from.replaced_by = resource resource.replaces = resource.copied_from db.session.commit() return flask.redirect("/picture/" + str(resource.copied_from.id)) @app.route("/picture/<int:id>/remove-replacement", methods=["POST"]) def remove_replacement(id): resource = db.session.get(PictureResource, id) if resource is None: flask.abort(404) current_user = db.session.get(User, flask.session.get("username")) if current_user is None: flask.abort(401) if resource.author != current_user and not current_user.admin: flask.abort(403) resource.replaced_by.replaces = None resource.replaced_by = None db.session.commit() return flask.redirect("/picture/" + str(resource.id)) @app.route("/picture/<int:id>/edit-metadata") def edit_picture(id): resource = db.session.get(PictureResource, id)
static/style.css
@@ -332,13 +332,20 @@ small {
background: var(--color-card); } .thumbnail-list > li > a {.thumbnail-list > li > a, .thumbnail-list > li {display: flex; flex-direction: column; justify-content: space-between; height: 100%; } .thumbnail-list > li > .list-more { display: flex; justify-content: space-between; align-items: center; padding: 8px; } .thumbnail-list > li:is(:hover, :focus, :has(:focus)) { position: relative; transform: scale(1.5);
@@ -350,3 +357,7 @@ small {
padding: 8px; display: block; } a.button { text-decoration: none; }
templates/picture.html
@@ -11,6 +11,17 @@
<x-frame style="--width: 768px"> <h1>{{ resource.title }}</h1> <p>{{ resource.description }}</p> {% if resource.replaced_by %} <h2>Obsolete</h2> <p> This picture has been replaced by <a href="/picture/{{ resource.replaced_by.id }}">{{ resource.replaced_by.title }}</a>. </p> {% if have_permission %} <form method="POST" action="/picture/{{ resource.id }}/remove-replacement"> <button class="button-flat" type="submit">Remove replacement</button> </form> {% endif %} {% endif %}<p> <a href="{{ resource.origin_url }}">Original source</a> | <a href="/raw/picture/{{ resource.id }}">View</a> |
@@ -156,6 +167,11 @@
{{ copy.title }} </div> </a> <div class="list-more"> <form method="POST" action="/picture/{{ copy.id }}/mark-replacement"> <button type="submit">Designate replacement</button> </form> </div></li> {% endfor %} </x-vbox>