[Zope-Checkins] SVN: Zope/trunk/ Adjusted overflow logic in DateIndex and DateRangeIndex to work with latest ZODB 3.10.0b4. Instead of an OverflowError a TypeError is raised now.

Hanno Schlichting hannosch at hannosch.eu
Wed Aug 4 15:14:19 EDT 2010


Log message for revision 115442:
  Adjusted overflow logic in DateIndex and DateRangeIndex to work with latest ZODB 3.10.0b4. Instead of an OverflowError a TypeError is raised now.
  

Changed:
  U   Zope/trunk/doc/CHANGES.rst
  U   Zope/trunk/src/Products/PluginIndexes/DateIndex/DateIndex.py
  U   Zope/trunk/src/Products/PluginIndexes/DateRangeIndex/DateRangeIndex.py

-=-
Modified: Zope/trunk/doc/CHANGES.rst
===================================================================
--- Zope/trunk/doc/CHANGES.rst	2010-08-04 18:35:50 UTC (rev 115441)
+++ Zope/trunk/doc/CHANGES.rst	2010-08-04 19:14:19 UTC (rev 115442)
@@ -11,6 +11,9 @@
 Bugs Fixed
 ++++++++++
 
+- Adjusted overflow logic in DateIndex and DateRangeIndex to work with latest
+  ZODB 3.10.0b4.
+
 - Made sure to exclude a number of meta ZCML handlers from ``zope.*`` packages
   where Zope2 provides its own implementations.
 

Modified: Zope/trunk/src/Products/PluginIndexes/DateIndex/DateIndex.py
===================================================================
--- Zope/trunk/src/Products/PluginIndexes/DateIndex/DateIndex.py	2010-08-04 18:35:50 UTC (rev 115441)
+++ Zope/trunk/src/Products/PluginIndexes/DateIndex/DateIndex.py	2010-08-04 19:14:19 UTC (rev 115442)
@@ -51,6 +51,7 @@
     DSTOFFSET = STDOFFSET
 
 DSTDIFF = DSTOFFSET - STDOFFSET
+MAX32 = 2**31
 
 class LocalTimezone(tzinfo):
 
@@ -263,9 +264,11 @@
 
         t_val = ( ( ( ( yr * 12 + mo ) * 31 + dy ) * 24 + hr ) * 60 + mn )
 
-        if isinstance(t_val, long):
-            # t_val must be IntType, not LongType
-            raise OverflowError, (
+        
+
+        if t_val >= MAX32:
+            # t_val must be integer fitting in the 32bit range
+            raise OverflowError(
                 "%s is not within the range of indexable dates (index: %s)"
                 % (value, self.id))
 

Modified: Zope/trunk/src/Products/PluginIndexes/DateRangeIndex/DateRangeIndex.py
===================================================================
--- Zope/trunk/src/Products/PluginIndexes/DateRangeIndex/DateRangeIndex.py	2010-08-04 18:35:50 UTC (rev 115441)
+++ Zope/trunk/src/Products/PluginIndexes/DateRangeIndex/DateRangeIndex.py	2010-08-04 19:14:19 UTC (rev 115442)
@@ -37,6 +37,7 @@
 from Products.PluginIndexes.interfaces import IDateRangeIndex
 
 _dtmldir = os.path.join( package_home( globals() ), 'dtml' )
+MAX32 = 2**31
 
 
 class DateRangeIndex(UnIndex):
@@ -397,7 +398,8 @@
         elif isinstance(value, DateTime):
             value = value.millis() / 1000 / 60 # flatten to minutes
         result = int( value )
-        if isinstance(result, long): # this won't work (Python 2.3)
+        if result >= MAX32:
+            # t_val must be integer fitting in the 32bit range
             raise OverflowError( '%s is not within the range of dates allowed'
                               'by a DateRangeIndex' % value)
         return result



More information about the Zope-Checkins mailing list