feat: Bild in Annotieren-View löschen (Eintrag + Datei aus Directus)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-16 21:19:51 +02:00
parent ceaa7eff3c
commit 05c62ac414
3 changed files with 69 additions and 4 deletions

33
app.py
View File

@@ -1727,11 +1727,36 @@ def directus_db_pictures_design_options():
return jsonify({"choices": choices})
@app.route("/api/directus/db-pictures/<pic_id>", methods=["PATCH"])
def directus_db_picture_patch(pic_id):
@app.route("/api/directus/db-pictures/<pic_id>", methods=["PATCH", "DELETE"])
def directus_db_picture(pic_id):
token = request.headers.get("Authorization", "")
data, status = _directus("PATCH", f"/items/db_pictures/{pic_id}", token, body=request.get_json(force=True, silent=True))
return jsonify(data), status
if request.method == "PATCH":
data, status = _directus("PATCH", f"/items/db_pictures/{pic_id}", token, body=request.get_json(force=True, silent=True))
return jsonify(data), status
# DELETE: erst picture-Eintrag laden, dann Eintrag + Datei löschen
pic_data, pic_status = _directus("GET", f"/items/db_pictures/{pic_id}?fields=id,picture", token)
if pic_status != 200:
return jsonify({"error": "Bild nicht gefunden"}), 404
file_uuid = (pic_data.get("data") or {}).get("picture")
# db_picture-Eintrag löschen
_, del_status = _directus("DELETE", f"/items/db_pictures/{pic_id}", token)
if del_status not in (200, 204):
return jsonify({"error": f"Fehler beim Löschen des Eintrags (Status {del_status})"}), del_status
# Prüfen ob wirklich gelöscht
_, check_status = _directus("GET", f"/items/db_pictures/{pic_id}?fields=id", token)
if check_status == 200:
return jsonify({"error": "Eintrag konnte nicht gelöscht werden"}), 500
# Datei löschen (nur wenn vorhanden)
if file_uuid:
_, file_del_status = _directus("DELETE", f"/files/{file_uuid}", token)
if file_del_status not in (200, 204):
return jsonify({"error": f"Eintrag gelöscht, aber Datei konnte nicht gelöscht werden (Status {file_del_status})"}), 500
return jsonify({}), 204
@app.route("/api/directus/db-objects", methods=["GET", "POST"])