Drag-Griff statt ganzem Element + Uebungs-Reihenfolge beim Start uebernehmen
Image bauen und in die Registry schieben / build (push) Successful in 6s

- Sortieren nur ueber einen kleinen Griff (Punkt-Icon) links im
  Uebungskopf; das ganze Element ist nicht mehr draggable (kein
  versehentliches Ziehen beim Tippen/Auswaehlen)
- Beim Session-Start wird die Uebungs-Reihenfolge der letzten
  abgeschlossenen Session desselben Tags uebernommen (server-seitig in
  create_session, in session.fields.exerciseOrder)
- Tests: 170 Checks gruen (40+18+52+32+28)
This commit is contained in:
AI-Agent committed 2026-10-05 11:31:07 +00:00
1 parent 7c5045cec8
commit aebd7f40e7
5 files changed
+60 -12

No files matched your search

+26 -3
View File
@@ -434,6 +434,26 @@ def fetch_session(user_id, sid):
return d
def last_exercise_order(user_id, activity, day):
"""Uebungs-Reihenfolge der letzten abgeschlossenen Session (Tag/Kategorie)."""
con = db()
clause, extra = _user_clause(user_id)
rows = con.execute(
f"SELECT fields FROM sessions WHERE activity=? AND day=? AND status='done' "
f"AND {clause} ORDER BY date DESC, id DESC LIMIT 10",
[activity, day] + extra).fetchall()
con.close()
for r in rows:
try:
f = json.loads(r["fields"] or "{}")
except Exception:
continue
order = f.get("exerciseOrder")
if isinstance(order, list) and order:
return order
return None
def create_session(user_id, data):
activity = _clean_str(data.get("activity"))
if not activity:
@@ -441,12 +461,15 @@ def create_session(user_id, data):
sdate = _clean_str(data.get("date")) or date.today().isoformat()
day = _clean_str(data.get("day"))
start = _clean_str(data.get("start_time")) or datetime.now().strftime("%H:%M")
# Reihenfolge der Uebungen aus der letzten abgeschlossenen Session uebernehmen
order = last_exercise_order(user_id, activity, day)
fields = json.dumps({"exerciseOrder": order}) if order else "{}"
con = db()
cur = con.execute(
"INSERT INTO sessions(activity,day,date,start_time,status,created_at,user_id) "
"VALUES(?,?,?,?,?,?,?)",
"INSERT INTO sessions(activity,day,date,start_time,status,created_at,user_id,fields) "
"VALUES(?,?,?,?,?,?,?,?)",
(activity, day, sdate, start, "active",
datetime.now().isoformat(timespec="seconds"), user_id))
datetime.now().isoformat(timespec="seconds"), user_id, fields))
con.commit()
sid = cur.lastrowid
con.close()