Skip to content

Calendar management: create, rename, delete, share #11

Description

@SashankBhamidi

The client can list calendars. It can't create, edit, delete, or share them.

Add to the client:

create_calendar(name, color=None, timezone=None) -> str
update_calendar(calendar_id, name=None, color=None, timezone=None)
delete_calendar(calendar_id)
share_calendar(calendar_id, account_id, rights)
get_calendar_subscriptions() -> list
set_default_alerts(calendar_id, alerts)

All use Calendar/set. The existing build_calendar_get / parse_calendar_get in _methods/calendar.py is the pattern. Add build_calendar_set and parse_calendar_set alongside.

Sharing uses shareWith on the Calendar object: a dict of account ID to right strings (mayReadItems, mayWriteAll, etc.).

  • Unit tests with mocked responses for each method
  • Integration test against Cyrus (sharing needs two test accounts, check if the Docker setup supports it)
  • Document what Cyrus and Stalwart do on delete-with-events

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions