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],
|
||||
marked_tag_ids: List[UUID_t],
|
||||
) -> Tuple[List[UUID_t], List[UUID_t]]:
|
||||
"""Regeneriert TripItems für einen Trip. Löscht alte, legt neue an.
|
||||
Gibt (created_ids, deleted_checked_ids) zurück."""
|
||||
# Sammle bestehende checked Items, falls sie verschwinden
|
||||
deleted_checked: List[UUID_t] = []
|
||||
|
||||
# Lösche alle existierenden TripItems und merke checked, die wegfallen
|
||||
# Map (item_id, tag_id) -> checked
|
||||
previous_checked = {}
|
||||
for ti in list(trip.trip_items):
|
||||
if ti.checked:
|
||||
deleted_checked.append(ti.id)
|
||||
previous_checked[(ti.item_id, ti.tag_id)] = ti.checked
|
||||
db.delete(ti)
|
||||
db.flush()
|
||||
|
||||
items = items_for_trip(db, trip.user_id, trip, selected_tag_ids)
|
||||
|
||||
created_ids: List[UUID_t] = []
|
||||
marked_set = set(marked_tag_ids)
|
||||
|
||||
|
|
@ -109,11 +103,12 @@ def generate_trip_items(
|
|||
|
||||
for tag_id in per_tags:
|
||||
calc = render_name(it.name, trip.start_date, trip.end_date)
|
||||
checked = previous_checked.get((it.id, tag_id), False)
|
||||
ti = models.TripItem(
|
||||
trip_id=trip.id,
|
||||
item_id=it.id,
|
||||
name_calculated=calc,
|
||||
checked=False,
|
||||
checked=checked,
|
||||
tag_id=tag_id,
|
||||
)
|
||||
db.add(ti)
|
||||
|
|
@ -121,4 +116,4 @@ def generate_trip_items(
|
|||
created_ids.append(ti.id)
|
||||
|
||||
db.flush()
|
||||
return created_ids, deleted_checked
|
||||
return created_ids, []
|
||||
|
|
|
|||
Loading…
Reference in a new issue