|
25 | 25 | build_event_changes, |
26 | 26 | build_event_get, |
27 | 27 | build_event_query, |
| 28 | + build_event_set_create, |
28 | 29 | build_event_set_destroy, |
29 | 30 | build_event_set_update, |
30 | 31 | parse_event_changes, |
| 32 | + parse_event_get, |
31 | 33 | parse_event_set, |
32 | 34 | ) |
33 | 35 | from caldav.jmap._methods.task import ( |
@@ -139,7 +141,7 @@ def _build_event_search_calls( |
139 | 141 | filter_dict["before"] = end |
140 | 142 | if text is not None: |
141 | 143 | filter_dict["text"] = text |
142 | | - query_call = build_event_query(account_id, filter=filter_dict or None) |
| 144 | + query_call = build_event_query(account_id, filter_condition=filter_dict or None) |
143 | 145 | get_call = ( |
144 | 146 | "CalendarEvent/get", |
145 | 147 | { |
@@ -279,11 +281,7 @@ def create_event(self, calendar_id: str, ical_str: str) -> str: |
279 | 281 | """ |
280 | 282 | session = self._get_session() |
281 | 283 | jscal = ical_to_jscal(ical_str, calendar_id=calendar_id) |
282 | | - call = ( |
283 | | - "CalendarEvent/set", |
284 | | - {"accountId": session.account_id, "create": {"new-0": jscal}}, |
285 | | - "ev-set-create-0", |
286 | | - ) |
| 284 | + call = build_event_set_create(session.account_id, {"new-0": jscal}) |
287 | 285 | responses = self._request([call]) |
288 | 286 |
|
289 | 287 | for method_name, resp_args, _ in responses: |
@@ -321,7 +319,7 @@ def get_event(self, event_id: str) -> JMAPCalendarObject: |
321 | 319 |
|
322 | 320 | for method_name, resp_args, _ in responses: |
323 | 321 | if method_name == "CalendarEvent/get": |
324 | | - items = resp_args.get("list", []) |
| 322 | + items = parse_event_get(resp_args) |
325 | 323 | if not items: |
326 | 324 | raise JMAPMethodError( |
327 | 325 | url=session.api_url, |
@@ -373,7 +371,7 @@ def _search( |
373 | 371 | if method_name == "CalendarEvent/get": |
374 | 372 | return [ |
375 | 373 | JMAPCalendarObject(data=item, parent=parent) |
376 | | - for item in resp_args.get("list", []) |
| 374 | + for item in parse_event_get(resp_args) |
377 | 375 | ] |
378 | 376 |
|
379 | 377 | return [] |
@@ -481,7 +479,7 @@ def get_objects_by_sync_token( |
481 | 479 | events_by_id: dict[str, JMAPCalendarObject] = {} |
482 | 480 | for method_name, resp_args, _ in get_responses: |
483 | 481 | if method_name == "CalendarEvent/get": |
484 | | - for item in resp_args.get("list", []): |
| 482 | + for item in parse_event_get(resp_args): |
485 | 483 | events_by_id[item["id"]] = JMAPCalendarObject(data=item, parent=None) |
486 | 484 |
|
487 | 485 | added = [events_by_id[i] for i in created_ids if i in events_by_id] |
@@ -513,6 +511,7 @@ def delete_event(self, event_id: str) -> None: |
513 | 511 | def _get_object_by_uid( |
514 | 512 | self, uid: str, calendar_id: str | None = None, parent: JMAPCalendar | None = None |
515 | 513 | ) -> JMAPCalendarObject: |
| 514 | + # RFC 8984 FilterCondition has no uid field; UID matching is done client-side. |
516 | 515 | for obj in self._search(calendar_id=calendar_id, parent=parent): |
517 | 516 | if obj.data.get("uid") == uid: |
518 | 517 | return obj |
|
0 commit comments