2 commits - pykolab/xml tests/test-005-timezone.py

Jeroen van Meeuwen vanmeeuwen at kolabsys.com
Wed Jul 18 01:00:03 CEST 2012


 pykolab/xml/event.py       |   31 +++++++++++++++++++++------
 tests/test-005-timezone.py |   50 +++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 74 insertions(+), 7 deletions(-)

New commits:
commit 21b33ad600d70e178eb48a9053314f58559fccfa
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date:   Tue Jul 17 22:59:48 2012 +0200

    Add timezone test

diff --git a/tests/test-005-timezone.py b/tests/test-005-timezone.py
new file mode 100644
index 0000000..9b12c66
--- /dev/null
+++ b/tests/test-005-timezone.py
@@ -0,0 +1,50 @@
+import datetime
+import icalendar
+import pytz
+import unittest
+
+from pykolab.xml import Attendee
+from pykolab.xml import Event
+from pykolab.xml import EventIntegrityError
+from pykolab.xml import InvalidAttendeeParticipantStatusError
+from pykolab.xml import InvalidEventDateError
+from pykolab.xml import event_from_ical
+
+class TestTimezone(unittest.TestCase):
+
+    def test_001_timezone_conflict(self):
+        london = Event()
+        london.set_organizer("john.doe at example.org", "Doe, John")
+        london.add_attendee("resource-car-vw at example.org", cutype="RESOURCE")
+        london.set_start(datetime.datetime.now(pytz.timezone("Europe/London")))
+        london.set_end(datetime.datetime.now(pytz.timezone("Europe/London")))
+
+        zurich = Event()
+        zurich.set_organizer("john.doe at example.org", "Doe, John")
+        zurich.add_attendee("resource-car-vw at example.org", cutype="RESOURCE")
+        zurich.set_start(datetime.datetime.now(pytz.timezone("Europe/Zurich")))
+        zurich.set_end(datetime.datetime.now(pytz.timezone("Europe/Zurich")))
+
+        london_xml = london.__str__()
+        zurich_xml = zurich.__str__()
+
+        #print london_xml
+        #print zurich_xml
+
+        london_itip = london.as_string_itip()
+        zurich_itip = zurich.as_string_itip()
+
+        del london, zurich
+
+        #print london_itip
+        #print zurich_itip
+
+        london_cal = icalendar.Calendar.from_ical(london_itip)
+        london = event_from_ical(london_cal.walk('VEVENT')[0].to_ical())
+
+        zurich_cal = icalendar.Calendar.from_ical(zurich_itip)
+        zurich = event_from_ical(zurich_cal.walk('VEVENT')[0].to_ical())
+
+        self.assertEqual(london_xml, london.__str__())
+        self.assertEqual(zurich_xml, zurich.__str__())
+


commit 7480dafd4cf99d2ef533a9c9dd2f3b31b843d7a0
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date:   Tue Jul 17 22:59:08 2012 +0200

    Fix pykolab.xml.event.get_end()

diff --git a/pykolab/xml/event.py b/pykolab/xml/event.py
index 1049956..b92339a 100644
--- a/pykolab/xml/event.py
+++ b/pykolab/xml/event.py
@@ -225,19 +225,36 @@ class Event(object):
                 year,
                 month,
                 day,
-                hour,
-                minute,
-                second
             ) = (
                     _datetime.year(),
                     _datetime.month(),
                     _datetime.day(),
-                    _datetime.hour(),
-                    _datetime.minute(),
-                    _datetime.second()
                 )
 
-        return datetime.datetime(year, month, day, hour, minute, second)
+        if not _datetime.hour() == None and not _datetime.hour() < 0:
+            (
+                    hour,
+                    minute,
+                    second
+                ) = (
+                        _datetime.hour(),
+                        _datetime.minute(),
+                        _datetime.second()
+                    )
+
+        _timezone = _datetime.timezone()
+
+        if _timezone == '':
+            _timezone = pytz.utc
+        elif _timezone == None:
+            _timezone = pytz.utc
+        else:
+            _timezone = pytz.timezone(_timezone)
+
+        if _datetime.hour() == None or _datetime.hour() < 0:
+            return datetime.date(year, month, day)
+        else:
+            return datetime.datetime(year, month, day, hour, minute, second, tzinfo=_timezone)
 
     def get_ical_attendee(self):
         # TODO: Formatting, aye? See also the example snippet:





More information about the commits mailing list