roundabout,
created on Saturday, 7 September 2024, 14:10:42 (1725718242),
received on Saturday, 7 September 2024, 16:16:28 (1725725788)
Author identity: vlad <vlad.muntoiu@gmail.com>
c1040a95c0d13bd0e0b020107aec837c5d277f43
app.py
@@ -533,6 +533,27 @@ def get_annotations(id):
return flask.jsonify(regions_json)
@app.route("/picture/<int:id>/delete")
def delete_picture(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)
PictureLicence.query.filter_by(resource=resource).delete()
PictureRegion.query.filter_by(resource=resource).delete()
db.session.delete(resource)
db.session.commit()
return flask.redirect("/")
@app.route("/query-pictures", methods=["POST"]) # sadly GET can't have a body
def query_pictures():
offset = int(flask.request.args.get("offset", 0))
templates/picture.html
@@ -17,7 +17,8 @@
<a href="/raw/picture/{{ resource.id }}" download="GigadataPicture_{{ resource.id }}{{ file_extension }}">Download</a> |
<a href="/picture/{{ resource.id }}/annotate">Annotate</a> |
<a href="/picture/{{ resource.id }}/put-annotations-form">Submit JSON annotations</a> |
<a href="/picture/{{ resource.id }}/get-annotations">Download annotations</a>
<a href="/picture/{{ resource.id }}/get-annotations">Download annotations</a> |
<a href="/picture/{{ resource.id }}/delete">Delete</a>
</p>
<div id="annotation-zone">
<img id="annotation-image" src="/raw/picture/{{ resource.id }}" alt="{{ resource.title }}">