diff options
-rw-r--r-- | pykolab/xml/event.py | 5 | ||||
-rw-r--r-- | tests/unit/test-003-event.py | 27 |
2 files changed, 30 insertions, 2 deletions
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"))) |