diff --git a/app.py b/app.py index 5213315..4ac4c0d 100644 --- a/app.py +++ b/app.py @@ -1192,10 +1192,10 @@ def get_object_questions_list(obj_id: str): if not q_ids: return jsonify({"data": []}) - # Schritt 2: Fragen laden (inkl. short_answer_de) + # Schritt 2: Fragen laden (inkl. short_answer_de) – archivierte ausschließen ids_param = urllib.parse.quote(",".join(q_ids), safe="") q_data, _ = _directus("GET", - f"/items/questions?filter[id][_in]={ids_param}&fields=id,question_de,answer_de,short_answer_de,level,status&limit=200", token) + f"/items/questions?filter[id][_in]={ids_param}&filter[status][_neq]=archived&fields=id,question_de,answer_de,short_answer_de,level,status&limit=200", token) items = sorted(q_data.get("data") or [], key=lambda x: x.get("level") or 0) # Schritt 3: Distractor-Wörter pro Frage (Bulk) @@ -1237,7 +1237,7 @@ def get_object_words_list(obj_id: str): return jsonify({"data": []}) ids_param = urllib.parse.quote(",".join(w_ids), safe="") w_data, _ = _directus("GET", - f"/items/words?filter[id][_in]={ids_param}&fields=id,title_de,level,status&limit=2000", token) + f"/items/words?filter[id][_in]={ids_param}&filter[status][_neq]=archived&fields=id,title_de,level,status&limit=2000", token) items = sorted(w_data.get("data") or [], key=lambda x: x.get("title_de") or "") return jsonify({"data": items}) @@ -1296,8 +1296,9 @@ def purge_orphan_junctions(obj_id: str): fk_val = row.get(fk_field) if not fk_val: continue - item_data, s = _directus("GET", f"/items/{item_col}/{fk_val}?fields=id", token) - if s != 200 or not item_data.get("data"): + item_data, s = _directus("GET", f"/items/{item_col}/{fk_val}?fields=id,status", token) + item = item_data.get("data") or {} + if s != 200 or not item or item.get("status") == "archived": _directus("DELETE", f"/items/{junc_col}/{row['id']}", token) removed += 1 @@ -1326,10 +1327,10 @@ def purge_all_orphans(): if not fk_ids: continue - # fetch which IDs still exist in one bulk call + # fetch which IDs still exist AND are not archived ids_param = ",".join(fk_ids) existing_data, _ = _directus("GET", - f"/items/{item_col}?filter[id][_in]={ids_param}&fields=id&limit=10000", token) + f"/items/{item_col}?filter[id][_in]={ids_param}&filter[status][_neq]=archived&fields=id&limit=10000", token) existing_ids = {e["id"] for e in (existing_data.get("data") or [])} orphan_junc_ids = [row["id"] for row in rows