From 9e98bfd4f0e646b75fbc18016a4eed1325196cdd Mon Sep 17 00:00:00 2001
From: Sebastien Robin <seb@nexedi.com>
Date: Mon, 9 Feb 2009 10:15:44 +0000
Subject: [PATCH] * getter on a undefined list property was not working
 properly   any more, bug was introduced by revision 25485 * add unit test to
 prevent such regression

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@25498 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ERP5Type/Base.py               |  7 +++----
 product/ERP5Type/tests/testERP5Type.py | 13 +++++++++++++
 2 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/product/ERP5Type/Base.py b/product/ERP5Type/Base.py
index fc1ab326e7..baca7a3463 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 e328391212..9c4752400d 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.
-- 
2.30.9