diff --git a/product/ERP5Type/Base.py b/product/ERP5Type/Base.py index fc1ab326e7bfe38e7d974cd8f8896030add68a1c..baca7a3463a180be853e07c5925584e9374d5180 100644 --- a/product/ERP5Type/Base.py +++ b/product/ERP5Type/Base.py @@ -1378,10 +1378,9 @@ class Base( CopyContainer, if not isinstance(result, (list, tuple)): result = [result] return result - else: - if d is not _MARKER: - return ERP5PropertyManager.getProperty(self, key, d=d, **kw) - return ERP5PropertyManager.getProperty(self, key, **kw) + if d is not _MARKER: + return ERP5PropertyManager.getProperty(self, key, d=d, **kw) + return ERP5PropertyManager.getProperty(self, key, **kw) security.declareProtected( Permissions.AccessContentsInformation, 'getPropertyList' ) def getPropertyList(self, key, d=None): diff --git a/product/ERP5Type/tests/testERP5Type.py b/product/ERP5Type/tests/testERP5Type.py index e328391212895d05196109de199774cffc0c52a0..9c4752400d1728c8cca4faa9b74c658215aebe84 100644 --- a/product/ERP5Type/tests/testERP5Type.py +++ b/product/ERP5Type/tests/testERP5Type.py @@ -2583,6 +2583,19 @@ class TestPropertySheet: person.setPropertyList('foo_bar', []) self.assertEquals(person.getFooBarList(), []) + def testUndefinedProperties(self): + """ + Make sure that getProperty and setProperty on a property not defined + in a propertysheet is working properly. + """ + person = self.getPersonModule().newContent(portal_type='Person') + self.assertEquals(person.getProperty('foo_bar'), None) + person.setProperty('foo_bar', 'foo') + self.assertEquals(person.getProperty('foo_bar'), 'foo') + self.assertEquals(person.getPropertyList('foo_bar_list'), None) + person.setProperty('foo_bar_list', ['foo', 'bar']) + self.assertEquals(list(person.getProperty('foo_bar_list')), ['foo', 'bar']) + class TestAccessControl(ERP5TypeTestCase): # Isolate test in a dedicaced class in order not to break other tests # when this one fails.