[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