Skip to content

Commit 0be48d2

Browse files
committed
search for alarms, with test code
1 parent 87b46dd commit 0be48d2

2 files changed

Lines changed: 32 additions & 3 deletions

File tree

caldav/objects.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1336,7 +1336,9 @@ def build_search_xml_query(
13361336
start=None,
13371337
end=None,
13381338
props=None,
1339-
**kwargs,
1339+
alarm_start=None,
1340+
alarm_end=None,
1341+
**kwargs
13401342
):
13411343
"""This method will produce a caldav search query as an etree object.
13421344
@@ -1396,6 +1398,11 @@ def build_search_xml_query(
13961398
if start or end:
13971399
filters.append(cdav.TimeRange(start, end))
13981400

1401+
if alarm_start or alarm_end:
1402+
filters.append(
1403+
cdav.CompFilter("VALARM") + cdav.TimeRange(alarm_start, alarm_end)
1404+
)
1405+
13991406
if todo is not None:
14001407
if not todo:
14011408
raise NotImplementedError()

tests/test_caldav.py

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -978,7 +978,8 @@ def testCreateEvent(self):
978978
assert len(events) == len(existing_events) + 2
979979
ev2.delete()
980980

981-
def testCreateAlarm(self):
981+
def testAlarm(self):
982+
## Ref https://github.com/python-caldav/caldav/issues/132
982983
c = self._fixCalendar()
983984
ev = c.save_event(
984985
dtstart=datetime(2015, 10, 10, 8, 7, 6),
@@ -987,7 +988,28 @@ def testCreateAlarm(self):
987988
alarm_trigger=timedelta(minutes=-15),
988989
alarm_action="AUDIO",
989990
)
990-
pass
991+
992+
## Search for the alarm (procrastinated - see https://github.com/python-caldav/caldav/issues/132)
993+
assert (
994+
len(
995+
c.search(
996+
event=True,
997+
alarm_start=datetime(2015, 10, 10, 8, 1),
998+
alarm_end=datetime(2015, 10, 10, 8, 7),
999+
)
1000+
)
1001+
== 0
1002+
)
1003+
assert (
1004+
len(
1005+
c.search(
1006+
event=True,
1007+
alarm_start=datetime(2015, 10, 10, 7, 44),
1008+
alarm_end=datetime(2015, 10, 10, 8, 7),
1009+
)
1010+
)
1011+
== 1
1012+
)
9911013

9921014
def testCalendarByFullURL(self):
9931015
"""

0 commit comments

Comments
 (0)