chiark
/
gitweb
/
~matthewv
/
gooswapper
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
3ab26f0
)
handle weekly recurrence pattern
author
Matthew Vernon
<mv3@sanger.ac.uk>
Fri, 19 Oct 2018 11:42:17 +0000
(12:42 +0100)
committer
Matthew Vernon
<mv3@sanger.ac.uk>
Fri, 19 Oct 2018 11:42:17 +0000
(12:42 +0100)
gooswapper.py
patch
|
blob
|
history
diff --git
a/gooswapper.py
b/gooswapper.py
index 75edd3febb2c54bcd77979cfadd513b4268f169e..e18da2f470c0d569ee7426aa6f1fc077c8b82746 100644
(file)
--- a/
gooswapper.py
+++ b/
gooswapper.py
@@
-136,6
+136,12
@@
def ex_event_changes(old,new):
len(deleted)))
return added, deleted, changed
len(deleted)))
return added, deleted, changed
+#exchangelib gives us days in recurrence patterns as integers,
+#RFC5545 wants SU,MO,TU,WE,TH,FR,SA
+#it has a utility function to convert to Monday, Tuesday, ...
+def rr_daystr_from_int(i):
+ return exchangelib.recurrence._weekday_to_str(i).upper()[:2]
+
def rrule_from_ex(event,gcal_tz):
if event.type != "RecurringMaster":
logger.error("Cannot make recurrence from not-recurring event")
def rrule_from_ex(event,gcal_tz):
if event.type != "RecurringMaster":
logger.error("Cannot make recurrence from not-recurring event")
@@
-146,6
+152,12
@@
def rrule_from_ex(event,gcal_tz):
if isinstance(event.recurrence.pattern,
exchangelib.recurrence.DailyPattern):
rr = "RRULE:FREQ=DAILY;INTERVAL=%d" % event.recurrence.pattern.interval
if isinstance(event.recurrence.pattern,
exchangelib.recurrence.DailyPattern):
rr = "RRULE:FREQ=DAILY;INTERVAL=%d" % event.recurrence.pattern.interval
+ elif isinstance(event.recurrence.pattern,
+ exchangelib.recurrence.WeeklyPattern):
+ rr = "RRULE:FREQ=WEEKLY;INTERVAL=%d;BYDAY=%s;WKST=%s" % \
+ (event.recurrence.pattern.interval,
+ ",".join([rr_daystr_from_int(x) for x in event.recurrence.pattern.weekdays]),
+ rr_daystr_from_int(event.recurrence.pattern.first_day_of_week) )
else:
logger.error("Recurrence %s not supported" % event.recurrence)
return None
else:
logger.error("Recurrence %s not supported" % event.recurrence)
return None