Fragen & Wörter nach Generate it anzeigen und löschen können
- Neue Endpoints: GET /api/object/<id>/questions+words, DELETE /api/question/<id>, DELETE /api/word/<id> - GenerateIt: Wörter-Sidebar mit ×-Chips, Fragen-Sidebar mit Level-Badge und × - Laden beim Objekt-Wechsel und nach Generate it Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
50
app.py
50
app.py
@@ -1164,6 +1164,56 @@ def publish_questions(obj_id: str):
|
||||
})
|
||||
|
||||
|
||||
@app.route("/api/object/<obj_id>/questions", methods=["GET"])
|
||||
def get_object_questions_list(obj_id: str):
|
||||
"""Gibt alle verknüpften Fragen eines Objekts zurück."""
|
||||
token = request.headers.get("Authorization", "")
|
||||
fields = "questions_id.id,questions_id.question_de,questions_id.answer_de,questions_id.level,questions_id.status"
|
||||
data, _ = _directus(
|
||||
"GET",
|
||||
f"/items/questions_objects?filter[objects_id][_eq]={obj_id}&fields={fields}&limit=200",
|
||||
token,
|
||||
)
|
||||
items = [e["questions_id"] for e in (data.get("data") or []) if e.get("questions_id")]
|
||||
items.sort(key=lambda x: x.get("level") or 0)
|
||||
return jsonify({"data": items})
|
||||
|
||||
|
||||
@app.route("/api/object/<obj_id>/words", methods=["GET"])
|
||||
def get_object_words_list(obj_id: str):
|
||||
"""Gibt alle verknüpften Wörter eines Objekts zurück."""
|
||||
token = request.headers.get("Authorization", "")
|
||||
fields = "words_id.id,words_id.title_de,words_id.level,words_id.status"
|
||||
data, _ = _directus(
|
||||
"GET",
|
||||
f"/items/words_objects?filter[objects_id][_eq]={obj_id}&fields={fields}&limit=2000",
|
||||
token,
|
||||
)
|
||||
items = [e["words_id"] for e in (data.get("data") or []) if e.get("words_id")]
|
||||
items.sort(key=lambda x: x.get("title_de") or "")
|
||||
return jsonify({"data": items})
|
||||
|
||||
|
||||
@app.route("/api/question/<q_id>", methods=["DELETE"])
|
||||
def delete_question_item(q_id: str):
|
||||
"""Löscht eine Frage aus Directus."""
|
||||
token = request.headers.get("Authorization", "")
|
||||
_, status = _directus("DELETE", f"/items/questions/{q_id}", token)
|
||||
if status in (200, 204):
|
||||
return jsonify({"ok": True})
|
||||
return jsonify({"error": "Delete failed"}), status
|
||||
|
||||
|
||||
@app.route("/api/word/<w_id>", methods=["DELETE"])
|
||||
def delete_word_item(w_id: str):
|
||||
"""Löscht ein Wort aus Directus."""
|
||||
token = request.headers.get("Authorization", "")
|
||||
_, status = _directus("DELETE", f"/items/words/{w_id}", token)
|
||||
if status in (200, 204):
|
||||
return jsonify({"ok": True})
|
||||
return jsonify({"error": "Delete failed"}), status
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
app.run(host="0.0.0.0", port=8000, debug=True)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user