Skip to content

feat: cancel() marks an object as cancelled - #810

Merged
tobixen merged 1 commit into
masterfrom
feat/cancel-598
Oct 20, 2026
Merged

tobixen merged 1 commit into
masterfrom
feat/cancel-598

Conversation

@tobixen

@tobixen tobixen commented Oct 20, 2026

Copy link
Copy Markdown
Member

Commit message:

feat: cancel() marks an object as cancelled

cancel() sets STATUS:CANCELLED and saves, on the overrides of a series
too.  On a single occurrence from search(expand=True) it becomes a
cancelled override in the series, for an occurrence that was planned
but will not take place.  Zimbra turns
such an override into an EXDATE; a new compatibility feature,
save-load.event.recurrences.exception.cancelled, records that.

Split out of the work on taking an occurrence out of a series with
delete(), which is postponed.  Part of
https://github.com/python-caldav/caldav/issues/598

Prompt: Fix 782, 799, 598, 795, 805, 806 [python-caldav issues; this commit is https://github.com/python-caldav/caldav/issues/598].  The small ones can share one PR, the bigger ones should probably have separated PRs.  (...)
Followup-Prompt: Check the updates on the issue - the EXDATE and .delete()-logic here will be procrastinated.  However, this branch also implements `.cancel()` and a _delete_headers refacotring (sic) which is "needed".  (that's what the other session said - it's 391k tokens big, so it's probably cheaper to work on this from a clean context?).  Please create a new branch for `.cancel()`, and consider if the `sync/async twin _delete_headers`-refactoring is also needed.  Push as a PR referencing but not closing the issue.  Rebase and push the original branch (no review needed)

Assisted-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Reviewed-by: Tobias Brox <tobias@redpill-linpro.com>

The EXDATE logic for delete() on an occurrence stays parked on https://github.com/python-caldav/caldav/tree/feat/delete-occurrence-598, now rebased on top of this branch.

cancel() sets STATUS:CANCELLED and saves, on the overrides of a series
too.  On a single occurrence from search(expand=True) it becomes a
cancelled override in the series, for an occurrence that was planned
but will not take place.  Zimbra turns
such an override into an EXDATE; a new compatibility feature,
save-load.event.recurrences.exception.cancelled, records that.

Split out of the work on taking an occurrence out of a series with
delete(), which is postponed.  Part of
#598

Prompt: Fix 782, 799, 598, 795, 805, 806 [python-caldav issues; this commit is #598].  The small ones can share one PR, the bigger ones should probably have separated PRs.  (...)
Followup-Prompt: Check the updates on the issue - the EXDATE and .delete()-logic here will be procrastinated.  However, this branch also implements `.cancel()` and a _delete_headers refacotring (sic) which is "needed".  (that's what the other session said - it's 391k tokens big, so it's probably cheaper to work on this from a clean context?).  Please create a new branch for `.cancel()`, and consider if the `sync/async twin _delete_headers`-refactoring is also needed.  Push as a PR referencing but not closing the issue.  Rebase and push the original branch (no review needed)

Assisted-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Reviewed-by: Tobias Brox <tobias@redpill-linpro.com>
@tobixen
tobixen merged commit 13fa2d8 into master Oct 20, 2026
17 checks passed
@tobixen
tobixen deleted the feat/cancel-598 branch October 20, 2026 17:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant