pykolab/xml tests/unit wallace/module_invitationpolicy.py
Thomas Brüderli
bruederli at kolabsys.com
Wed Mar 11 09:49:03 CET 2015
pykolab/xml/recurrence_rule.py | 4 ++++
tests/unit/test-003-event.py | 3 ++-
wallace/module_invitationpolicy.py | 3 +--
3 files changed, 7 insertions(+), 3 deletions(-)
New commits:
commit e731c861ebcb52ef33296b53f2a72099a4ae5161
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date: Tue Mar 10 06:17:26 2015 -0400
Force RRULE UNTIL attribute to be a UTC date/time but also account for it to be a date-only value
diff --git a/pykolab/xml/recurrence_rule.py b/pykolab/xml/recurrence_rule.py
index 30ab10a..6f6c7d8 100644
--- a/pykolab/xml/recurrence_rule.py
+++ b/pykolab/xml/recurrence_rule.py
@@ -1,3 +1,4 @@
+import pytz
import icalendar
import datetime
import kolabformat
@@ -166,6 +167,9 @@ class RecurrenceRule(kolabformat.RecurrenceRule):
if isinstance(until, list):
until = until[0]
if isinstance(until, datetime.datetime) or isinstance(until, datetime.date):
+ # move into UTC timezone according to RFC 5545
+ if isinstance(until, datetime.datetime):
+ until = until.astimezone(pytz.utc)
self.setEnd(xmlutils.to_cdatetime(until, True))
def _set_map_value(self, val, pmap, setter):
diff --git a/tests/unit/test-003-event.py b/tests/unit/test-003-event.py
index f039ca1..4e14cd4 100644
--- a/tests/unit/test-003-event.py
+++ b/tests/unit/test-003-event.py
@@ -542,7 +542,7 @@ END:VEVENT
rrule.set_byday(['2WE','-1SU'])
rrule.setBymonth([2])
rrule.set_count(10)
- rrule.set_until(datetime.datetime(2014,7,23, 11,0,0, tzinfo=pytz.utc))
+ rrule.set_until(datetime.datetime(2014,7,23, 11,0,0, tzinfo=pytz.timezone("Europe/London")))
self.event.set_recurrence(rrule);
ical = icalendar.Calendar.from_ical(self.event.as_string_itip())
@@ -564,6 +564,7 @@ END:VEVENT
self.assertEqual(event['rrule']['BYMONTH'][0], 2)
self.assertEqual(event['rrule']['BYDAY'], ['2WE','-1SU'])
self.assertIsInstance(event['rrule']['UNTIL'][0], datetime.datetime)
+ self.assertEquals(event['rrule']['UNTIL'][0].tzinfo, pytz.utc)
def test_019_to_message_itip(self):
self.event = Event()
diff --git a/wallace/module_invitationpolicy.py b/wallace/module_invitationpolicy.py
index 72a4464..ee96634 100644
--- a/wallace/module_invitationpolicy.py
+++ b/wallace/module_invitationpolicy.py
@@ -18,7 +18,6 @@
#
import datetime
-import pytz
import os
import tempfile
import time
@@ -608,7 +607,7 @@ def process_itip_cancel(itip_event, policy, recipient_email, sender_email, recei
if itip_event['recurrence-id'] and master and itip_event['xml'].get_thisandfuture():
rrule = master.get_recurrence()
rrule.set_count(0)
- rrule.set_until(existing.get_start().astimezone(pytz.utc) + datetime.timedelta(days=-1))
+ rrule.set_until(existing.get_start() + datetime.timedelta(days=-1))
master.set_recurrence(rrule)
existing.set_recurrence_id(existing.get_recurrence_id(), True)
More information about the commits
mailing list