fix: preserve checked state when regenerating tripitems
This commit is contained in:
parent
475dbe03c4
commit
ece5a3cc85
1 changed files with 6 additions and 11 deletions
|
|
@ -85,20 +85,14 @@ def generate_trip_items(
|
||||||
selected_tag_ids: List[UUID_t],
|
selected_tag_ids: List[UUID_t],
|
||||||
marked_tag_ids: List[UUID_t],
|
marked_tag_ids: List[UUID_t],
|
||||||
) -> Tuple[List[UUID_t], List[UUID_t]]:
|
) -> Tuple[List[UUID_t], List[UUID_t]]:
|
||||||
"""Regeneriert TripItems für einen Trip. Löscht alte, legt neue an.
|
# Map (item_id, tag_id) -> checked
|
||||||
Gibt (created_ids, deleted_checked_ids) zurück."""
|
previous_checked = {}
|
||||||
# Sammle bestehende checked Items, falls sie verschwinden
|
|
||||||
deleted_checked: List[UUID_t] = []
|
|
||||||
|
|
||||||
# Lösche alle existierenden TripItems und merke checked, die wegfallen
|
|
||||||
for ti in list(trip.trip_items):
|
for ti in list(trip.trip_items):
|
||||||
if ti.checked:
|
previous_checked[(ti.item_id, ti.tag_id)] = ti.checked
|
||||||
deleted_checked.append(ti.id)
|
|
||||||
db.delete(ti)
|
db.delete(ti)
|
||||||
db.flush()
|
db.flush()
|
||||||
|
|
||||||
items = items_for_trip(db, trip.user_id, trip, selected_tag_ids)
|
items = items_for_trip(db, trip.user_id, trip, selected_tag_ids)
|
||||||
|
|
||||||
created_ids: List[UUID_t] = []
|
created_ids: List[UUID_t] = []
|
||||||
marked_set = set(marked_tag_ids)
|
marked_set = set(marked_tag_ids)
|
||||||
|
|
||||||
|
|
@ -109,11 +103,12 @@ def generate_trip_items(
|
||||||
|
|
||||||
for tag_id in per_tags:
|
for tag_id in per_tags:
|
||||||
calc = render_name(it.name, trip.start_date, trip.end_date)
|
calc = render_name(it.name, trip.start_date, trip.end_date)
|
||||||
|
checked = previous_checked.get((it.id, tag_id), False)
|
||||||
ti = models.TripItem(
|
ti = models.TripItem(
|
||||||
trip_id=trip.id,
|
trip_id=trip.id,
|
||||||
item_id=it.id,
|
item_id=it.id,
|
||||||
name_calculated=calc,
|
name_calculated=calc,
|
||||||
checked=False,
|
checked=checked,
|
||||||
tag_id=tag_id,
|
tag_id=tag_id,
|
||||||
)
|
)
|
||||||
db.add(ti)
|
db.add(ti)
|
||||||
|
|
@ -121,4 +116,4 @@ def generate_trip_items(
|
||||||
created_ids.append(ti.id)
|
created_ids.append(ti.id)
|
||||||
|
|
||||||
db.flush()
|
db.flush()
|
||||||
return created_ids, deleted_checked
|
return created_ids, []
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue