Skip to content

Commit 9f2e6e0

Browse files
committed
search for alarms, with test code
1 parent b174c34 commit 9f2e6e0

2 files changed

Lines changed: 31 additions & 2 deletions

File tree

caldav/objects.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1107,6 +1107,8 @@ def build_search_xml_query(
11071107
expand=None,
11081108
start=None,
11091109
end=None,
1110+
alarm_start=None,
1111+
alarm_end=None,
11101112
**kwargs
11111113
):
11121114
"""This method will produce a caldav search query as an etree object.
@@ -1165,6 +1167,11 @@ def build_search_xml_query(
11651167
if start or end:
11661168
filters.append(cdav.TimeRange(start, end))
11671169

1170+
if alarm_start or alarm_end:
1171+
filters.append(
1172+
cdav.CompFilter("VALARM") + cdav.TimeRange(alarm_start, alarm_end)
1173+
)
1174+
11681175
if todo is not None:
11691176
if not todo:
11701177
raise NotImplementedError()

tests/test_caldav.py

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -767,7 +767,8 @@ def testCreateEvent(self):
767767
events = c.events()
768768
assert len(events) == len(existing_events) + 2
769769

770-
def testCreateAlarm(self):
770+
def testAlarm(self):
771+
## Ref https://github.com/python-caldav/caldav/issues/132
771772
c = self._fixCalendar()
772773
ev = c.save_event(
773774
dtstart=datetime(2015, 10, 10, 8, 7, 6),
@@ -776,7 +777,28 @@ def testCreateAlarm(self):
776777
alarm_trigger=timedelta(minutes=-15),
777778
alarm_action="AUDIO",
778779
)
779-
pass
780+
781+
## Search for the alarm (procrastinated - see https://github.com/python-caldav/caldav/issues/132)
782+
assert (
783+
len(
784+
c.search(
785+
event=True,
786+
alarm_start=datetime(2015, 10, 10, 8, 1),
787+
alarm_end=datetime(2015, 10, 10, 8, 7),
788+
)
789+
)
790+
== 0
791+
)
792+
assert (
793+
len(
794+
c.search(
795+
event=True,
796+
alarm_start=datetime(2015, 10, 10, 7, 44),
797+
alarm_end=datetime(2015, 10, 10, 8, 7),
798+
)
799+
)
800+
== 1
801+
)
780802

781803
def testCalendarByFullURL(self):
782804
"""

0 commit comments

Comments
 (0)