[Erp5-report] r34417 jm - in /erp5/trunk/products: ERP5Catalog/tests/ ERP5Type/

nobody at svn.erp5.org nobody at svn.erp5.org
Fri Apr 9 11:15:55 CEST 2010


Author: jm
Date: Fri Apr  9 11:15:53 2010
New Revision: 34417

URL: http://svn.erp5.org?rev=34417&view=rev
Log:
Do not use immediateReindexObject in getParentUid

Modified:
    erp5/trunk/products/ERP5Catalog/tests/testERP5Catalog.py
    erp5/trunk/products/ERP5Type/Base.py

Modified: erp5/trunk/products/ERP5Catalog/tests/testERP5Catalog.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Catalog/tests/testERP5Catalog.py?rev=34417&r1=34416&r2=34417&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Catalog/tests/testERP5Catalog.py [utf8] (original)
+++ erp5/trunk/products/ERP5Catalog/tests/testERP5Catalog.py [utf8] Fri Apr  9 11:15:53 2010
@@ -4038,6 +4038,42 @@
         ' AS catalog' % (module_uid, ),
     })[0][0], module_len)
 
+  def test_getParentUid(self, quiet=quiet):
+    from Products.ERP5Type.Document.Person import Person
+    from Products.ERP5Type.Document.Assignment import Assignment
+    person_module = self.getPersonModule()
+
+    person = Person(person_module.generateNewId())
+    person.setDefaultReindexParameters(activate_kw={'after_tag': self.id()})
+    person = person_module[person_module._setObject(person.id, person)]
+    self.assertFalse('uid' in person.__dict__)
+    person.uid = None
+    assignment = Assignment(person.generateNewId())
+    assignment.setDefaultReindexParameters(activate_kw={'tag': self.id()})
+    assignment = person[person._setObject(assignment.id, assignment)]
+    self.assertFalse('uid' in assignment.__dict__)
+    assignment.uid = None
+    get_transaction().commit()
+
+    person_uid_list = []
+    catalog_result_list = []
+    Assignment_getParentUid = Assignment.getParentUid
+    def getParentUid(self):
+      person_uid_list.append(person.uid)
+      uid = Assignment_getParentUid(self)
+      catalog_result_list.append(len(self.portal_catalog(uid=uid)))
+      return uid
+    Assignment.getParentUid = getParentUid
+    try:
+      self.tic()
+    finally:
+      Assignment.getParentUid = Assignment_getParentUid
+    self.assertEqual(catalog_result_list[0], 0)
+    self.assertEqual(person_uid_list[0], None)
+    self.assertTrue(int(person.uid))
+    self.assertEqual(person.uid, assignment.getParentUid())
+
+
 def test_suite():
   suite = unittest.TestSuite()
   suite.addTest(unittest.makeSuite(TestERP5Catalog))

Modified: erp5/trunk/products/ERP5Type/Base.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/Base.py?rev=34417&r1=34416&r2=34417&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Base.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/Base.py [utf8] Fri Apr  9 11:15:53 2010
@@ -1812,15 +1812,7 @@
       for the implementation of the ZSQLCatalog based listing
       of objects.
     """
-    parent = self.aq_inner.aq_parent
-    uid = getattr(aq_base(parent), 'uid', None)
-    if uid is None:
-      parent.immediateReindexObject() # Required with deferred indexing
-      uid = getattr(aq_base(parent), 'uid', None)
-      if uid is None:
-        LOG('Failed twice getParentUid', 0, str((self.getPhysicalPath(),parent.getPhysicalPath())))
-        raise DeferredCatalogError('Could neither access parent uid nor generate it', self)
-    return uid
+    return self.aq_inner.aq_parent.getUid()
 
   security.declareProtected( Permissions.AccessContentsInformation,
                              'getParentTitleOrId' )




More information about the Erp5-report mailing list