From 059a67228f3786f4b004598cbc72dbbc79ac75db Mon Sep 17 00:00:00 2001
From: Jean-Paul Smets <jp@nexedi.com>
Date: Tue, 6 Dec 2005 15:03:00 +0000
Subject: [PATCH] Implemented support for properties and local properties

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@4503 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ERP5Type/patches/PropertyManager.py | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/product/ERP5Type/patches/PropertyManager.py b/product/ERP5Type/patches/PropertyManager.py
index 6ac0475960..9883d98e90 100755
--- a/product/ERP5Type/patches/PropertyManager.py
+++ b/product/ERP5Type/patches/PropertyManager.py
@@ -129,15 +129,25 @@ def PropertyManager_propertyIds(self):
 
 def PropertyManager_propertyValues(self):
     """Return a list of actual property objects """
-    return map(lambda i,s=self: getattr(s,i['id']), self._propertyMap())
+    return map(lambda i,s=self: s.getProperty(i['id']), self._propertyMap())
 
 def PropertyManager_propertyItems(self):
     """Return a list of (id,property) tuples """
-    return map(lambda i,s=self: (i['id'],getattr(s,i['id'])), self._propertyMap())
+    return map(lambda i,s=self: (i['id'],s.getProperty(i['id'])), self._propertyMap())
 
 def PropertyManager_propertyMap(self):
     """Return a tuple of mappings, giving meta-data for properties """
-    return tuple(list(self._properties) + list(getattr(self, '_local_properties', ())))
+    property_map = list(self._properties)
+    property_dict = {}
+    for p in property_map:
+      property_dict[p['id']] = None
+      # base_id is defined for properties which are associated to multiple accessors
+      if p.has_key('base_id'): property_dict[p['base_id']] = None
+    # Only add those local properties which are not global
+    for p in getattr(self, '_local_properties', ()):
+      if not property_dict.has_key(p['id']):
+        property_map.append(p)
+    return tuple(property_map)
 
 def PropertyManager_propdict(self):
     dict={}
-- 
2.30.9