[Erp5-report] r24452 - in /erp5/trunk/products/ERP5: Tool/IdTool.py tests/testIdTool.py

nobody at svn.erp5.org nobody at svn.erp5.org
Mon Nov 3 11:55:20 CET 2008


Author: jerome
Date: Mon Nov  3 11:55:12 2008
New Revision: 24452

URL: http://svn.erp5.org?rev=24452&view=rev
Log:
use random.getrandbits for IdTool.generateNewLongId, the previous implementation was not compatible with zope >= 2.8

Modified:
    erp5/trunk/products/ERP5/Tool/IdTool.py
    erp5/trunk/products/ERP5/tests/testIdTool.py

Modified: erp5/trunk/products/ERP5/Tool/IdTool.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Tool/IdTool.py?rev=24452&r1=24451&r2=24452&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Tool/IdTool.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Tool/IdTool.py [utf8] Mon Nov  3 11:55:12 2008
@@ -26,6 +26,7 @@
 #
 ##############################################################################
 
+import random
 from Acquisition import aq_base
 from AccessControl import ClassSecurityInfo
 from Globals import InitializeClass, DTMLFile, PersistentMapping
@@ -129,13 +130,10 @@
                             'generateNewLongId')
   def generateNewLongId(self, **kw):
     """
-      Returns the ZODB transation id to be used as an identifier.
+      Returns a random 64bits long.
       It's a 64bits number, so it can look ugly and/or huge to users.
     """
-    tid = get_transaction()._id;
-    # It's a 64 bits number, but sometimes it returns as a negative int... so
-    # make it positive again and add 2**63.
-    return (tid < 0) and (2**63 - tid) or tid;
+    return random.getrandbits(64)
 
   security.declareProtected(Permissions.AccessContentsInformation,
                             'getDictLengthIdsItems')

Modified: erp5/trunk/products/ERP5/tests/testIdTool.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testIdTool.py?rev=24452&r1=24451&r2=24452&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testIdTool.py [utf8] (original)
+++ erp5/trunk/products/ERP5/tests/testIdTool.py [utf8] Mon Nov  3 11:55:12 2008
@@ -1,5 +1,5 @@
 ##############################################################################
-#
+# -*- coding: latin1 -*-
 # Copyright (c) 2008 Nexedi SARL and Contributors. All Rights Reserved.
 #          Aur�en Calonne <aurel at nexedi.com>
 #
@@ -119,6 +119,11 @@
                                                 default='A',
                                                 method=generateTestNumber))
 
+  def test_generateNewLongId(self):
+    idtool = self.portal.portal_ids
+    # test with value stored into zodb
+    new_id = idtool.generateNewLongId()
+    self.assertTrue(isinstance(new_id, long))
 
 def test_suite():
   suite = unittest.TestSuite()




More information about the Erp5-report mailing list