pykolab/xml tests/unit
Thomas Brüderli
bruederli at kolabsys.com
Tue Feb 24 16:15:13 CET 2015
pykolab/xml/event.py | 5 +++--
tests/unit/test-003-event.py | 27 +++++++++++++++++++++++++++
2 files changed, 30 insertions(+), 2 deletions(-)
New commits:
commit b797505f35b3fbaa0eaf202ed4d11d5f4aa39f75
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date: Mon Feb 23 20:48:15 2015 -0500
Fix event.get_instance() calls for all-day events (#4709)
diff --git a/pykolab/xml/event.py b/pykolab/xml/event.py
index 31ea476..4158d31 100644
--- a/pykolab/xml/event.py
+++ b/pykolab/xml/event.py
@@ -1379,9 +1379,10 @@ class Event(object):
def get_instance(self, _datetime):
# If no timezone information is given, use the one from event start
- if _datetime.tzinfo == None:
+ if isinstance(_datetime, datetime.datetime) and _datetime.tzinfo == None:
_start = self.get_start()
- _datetime = _datetime.replace(tzinfo=_start.tzinfo)
+ if hasattr(_start, 'tzinfo'):
+ _datetime = _datetime.replace(tzinfo=_start.tzinfo)
instance = self.get_next_instance(_datetime - datetime.timedelta(days=1))
while instance:
diff --git a/tests/unit/test-003-event.py b/tests/unit/test-003-event.py
index cc27e58..1f9f36b 100644
--- a/tests/unit/test-003-event.py
+++ b/tests/unit/test-003-event.py
@@ -690,6 +690,33 @@ END:VEVENT
occurrence = event.get_next_instance(event.get_start())
self.assertEqual(occurrence.get_summary(), "Exception")
+ def test_021_allday_recurrence(self):
+ rrule = kolabformat.RecurrenceRule()
+ rrule.setFrequency(kolabformat.RecurrenceRule.Daily)
+ rrule.setCount(10)
+
+ self.event = Event()
+ self.event.set_summary('alldays')
+ self.event.set_recurrence(rrule);
+
+ _start = datetime.date(2015,1,1)
+ self.event.set_start(_start)
+ self.event.set_end(_start)
+
+ exdate = datetime.date(2015,1,5)
+ xmlexception = Event(from_string=str(self.event))
+ xmlexception.set_start(exdate)
+ xmlexception.set_end(exdate)
+ xmlexception.set_recurrence_id(exdate, False)
+ xmlexception.set_status('CANCELLED')
+ self.event.add_exception(xmlexception)
+
+ inst3 = self.event.get_instance(datetime.date(2015,1,3))
+ self.assertEqual(inst3.get_start(), datetime.date(2015,1,3))
+
+ inst5 = self.event.get_instance(exdate)
+ self.assertEqual(inst5.get_status(True), 'CANCELLED')
+
def test_021_ical_exceptions(self):
self.event.set_summary("test")
self.event.set_start(datetime.datetime(2014, 05, 23, 11, 00, 00, tzinfo=pytz.timezone("Europe/London")))
More information about the commits
mailing list