[Erp5-report] r45131 seb - in /erp5/trunk/products/ERP5Type: patches/ tests/

nobody at svn.erp5.org nobody at svn.erp5.org
Wed Apr 6 15:49:28 CEST 2011


Author: seb
Date: Wed Apr  6 15:49:27 2011
New Revision: 45131

URL: http://svn.erp5.org?rev=45131&view=rev
Log:
getProperty('foo', d='bar') was raising attribute error if
in the past a local property 'foo' was created, then deleted
(so with _local_properties still having information about the
removed property)

Modified:
    erp5/trunk/products/ERP5Type/patches/PropertyManager.py
    erp5/trunk/products/ERP5Type/tests/testERP5Type.py

Modified: erp5/trunk/products/ERP5Type/patches/PropertyManager.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/patches/PropertyManager.py?rev=45131&r1=45130&r2=45131&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/patches/PropertyManager.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/patches/PropertyManager.py [utf8] Wed Apr  6 15:49:27 2011
@@ -68,7 +68,7 @@ def PropertyManager_getProperty(self, id
         econtext = createExpressionContext(self)
         return expression(econtext)
     elif property_type:
-      return getattr(self, id)
+      return getattr(self, id, d)
     return d
 
 def PropertyManager_getPropertyType(self, id, local_properties=False):

Modified: erp5/trunk/products/ERP5Type/tests/testERP5Type.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/tests/testERP5Type.py?rev=45131&r1=45130&r2=45131&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/tests/testERP5Type.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/tests/testERP5Type.py [utf8] Wed Apr  6 15:49:27 2011
@@ -66,7 +66,8 @@ class PropertySheetTestCase(ERP5TypeTest
     """Clean up """
     ttool = self.getTypesTool()
     # remove all property sheet we added to type informations
-    for ti_name, psheet_list in self._added_property_sheets.items():
+    for ti_name, psheet_list in getattr(self, '_added_property_sheets',
+                                   {}).items():
       ti = ttool.getTypeInfo(ti_name)
       property_sheet_set = set(ti.getTypePropertySheetList())
       for psheet in psheet_list:
@@ -136,6 +137,8 @@ class TestERP5Type(PropertySheetTestCase
 
     def beforeTearDown(self):
       transaction.abort()
+      # THIS IS UGLY, WE MUST REMOVE AS SOON AS POSSIBLE, NOT COMPATIBLE
+      # WITH LIVE TEST
       for module in [ self.getPersonModule(),
                       self.getOrganisationModule(),
                       self.getCategoryTool().region ]:
@@ -3075,6 +3078,15 @@ class TestERP5Type(PropertySheetTestCase
         property_id_dict[property_id] = 1
       self.assertEqual([], non_unique_property_id_list)
 
+    def testLocalProperties(self):
+      portal = self.getPortalObject()
+      person = portal.person_module.newContent(portal_type='Person')
+      person.edit(foo_property='bar')
+      self.assertEquals('bar', person.getProperty('foo_property'))
+      del person.__dict__['foo_property']
+      self.assertEquals(None, person.getProperty('foo_property'))
+      self.assertEquals(None, person.getProperty('foobar_property'))
+
 class TestAccessControl(ERP5TypeTestCase):
   # Isolate test in a dedicaced class in order not to break other tests
   # when this one fails.



More information about the Erp5-report mailing list