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