Calculate recurrence schedule on todo update, not just toggle
When editing an already-completed todo to add/change recurrence or due_date, recalculate reset_at and next_due_date so the reset info displays immediately without needing to uncomplete and re-complete. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
07cfbabcf0
commit
66ad8902d7
@ -192,6 +192,22 @@ async def update_todo(
|
|||||||
for key, value in update_data.items():
|
for key, value in update_data.items():
|
||||||
setattr(todo, key, value)
|
setattr(todo, key, value)
|
||||||
|
|
||||||
|
# Recalculate recurrence schedule if the todo is completed and now
|
||||||
|
# has a recurrence rule (e.g. user edited a completed todo to add
|
||||||
|
# recurrence, or changed the rule/due_date while completed).
|
||||||
|
if todo.completed and todo.recurrence_rule:
|
||||||
|
reset_at, next_due = _calculate_recurrence(
|
||||||
|
todo.recurrence_rule,
|
||||||
|
todo.due_date,
|
||||||
|
current_user.first_day_of_week,
|
||||||
|
)
|
||||||
|
todo.reset_at = reset_at
|
||||||
|
todo.next_due_date = next_due
|
||||||
|
elif todo.completed and not todo.recurrence_rule:
|
||||||
|
# Recurrence removed while completed — clear schedule
|
||||||
|
todo.reset_at = None
|
||||||
|
todo.next_due_date = None
|
||||||
|
|
||||||
await db.commit()
|
await db.commit()
|
||||||
await db.refresh(todo)
|
await db.refresh(todo)
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user