Interviews: notes typed or extended on the phone are never pulled, then erased by the next push #22
Labels
No labels
bug
documentation
enhancement
performance
security
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Postulo/postulo-dav#22
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Found on 2026-09-29 in a read-only review of postulo-dav at
97abc9779, readingapply_eventand running a pull and a push against the test suite's fake server.apply_eventtakes the event's DESCRIPTION as the interview's notes only when it does not start with the notes already here. The rule exists to ignore the "With: …" line Postulo itself appends, but it also discards real edits: when the interview has no notes, every description starts with the empty string, and when the phone adds to existing notes, the result still starts with the old ones. The run counts the event as pulled and stores its ETag, so nothing remembers the text was not taken, and the next push for any other reason overwrites the event with Postulo's description.src/postulo_dav/sync.py:202-208(apply_event:and not event.description.startswith(interview.notes));src/postulo_dav/sync.py:629-635(_sync_interviews: afterapply_eventthe link takes the remote ETag and alocal_hashcomputed from the unchanged interview).event_lines(), and the phone's description no longer contains "Bring the portfolio".Reproduced against the
FakeDavfromtests/test_dav.py(the pushed event'sVALARMremoved so that its own DESCRIPTION does not interfere). The same happens to "Bring CV" extended to "Bring CV and the portfolio".Related to #11, which covers a
VALARM's DESCRIPTION replacing the notes and asks that the "With:" line be told apart from the notes, but not this rule, which drops the phone's edits even once the parser is fixed.Done when
tests/test_dav.pythat set a description on the phone for an interview with empty notes, and extend one with existing notes, and assert after one run that the notes equal the phone's text, and after a further local change and push that the server's event still carries it.Fixed by pull request #35, merged as
fb8bbd7ae.