[CalendarServer-changes] [5185] CalendarServer/trunk/twext/python/datetime.py
source_changes at macosforge.org
source_changes at macosforge.org
Mon Feb 22 22:48:41 PST 2010
Revision: 5185
http://trac.macosforge.org/projects/calendarserver/changeset/5185
Author: wsanchez at apple.com
Date: 2010-02-22 22:48:38 -0800 (Mon, 22 Feb 2010)
Log Message:
-----------
Fix __cmp__ and __sub__ when other isn't a dateordatetime, add __eq__
Modified Paths:
--------------
CalendarServer/trunk/twext/python/datetime.py
Modified: CalendarServer/trunk/twext/python/datetime.py
===================================================================
--- CalendarServer/trunk/twext/python/datetime.py 2010-02-23 05:23:17 UTC (rev 5184)
+++ CalendarServer/trunk/twext/python/datetime.py 2010-02-23 06:48:38 UTC (rev 5185)
@@ -24,7 +24,9 @@
"utc",
]
+date = __import__("datetime").date
datetime = __import__("datetime").datetime
+
from vobject.icalendar import dateTimeToString, dateToString, utc
@@ -33,6 +35,8 @@
"""
@param dateOrDatetime: a L{date} or L{datetime}.
"""
+ assert dateOrDatetime is not None
+
self._dateOrDatetime = dateOrDatetime
if isinstance(dateOrDatetime, datetime):
self._isDatetime = True
@@ -40,6 +44,9 @@
self._isDatetime = False
self.defaultTZ = defaultTZ
+ def __repr__(self):
+ return "dateordatetime(%r)" % (self._dateOrDatetime,)
+
def _comparableDatetimes(self, other):
if not isinstance(other, dateordatetime):
other = dateordatetime(other)
@@ -59,7 +66,15 @@
return dt1, dt2
+ def __eq__(self, other):
+ if isinstance(other, dateordatetime):
+ other = other.dateOrDatetime
+ return self._dateOrDatetime == other
+
def __cmp__(self, other):
+ if not isinstance(other, (date, datetime, dateordatetime)):
+ return NotImplemented
+
dt1, dt2 = self._comparableDatetimes(other)
if dt1 == dt2:
@@ -70,6 +85,9 @@
return 1
def __sub__(self, other):
+ if not isinstance(other, (date, datetime, dateordatetime)):
+ return NotImplemented
+
dt1, dt2 = self._comparableDatetimes(other)
return dt1 - dt2
@@ -119,7 +137,7 @@
"""
assert end is None or duration is None
- if isinstance(start, dateordatetime):
+ if start is None or isinstance(start, dateordatetime):
self._start = start
else:
self._start = dateordatetime(start)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20100222/da814419/attachment-0001.html>
More information about the calendarserver-changes
mailing list