[Erp5-report] r7158 - in /erp5/trunk/products/ERP5Type: ./ Accessor/
nobody at svn.erp5.org
nobody at svn.erp5.org
Wed May 10 17:21:10 CEST 2006
Author: romain
Date: Wed May 10 17:21:03 2006
New Revision: 7158
URL: http://svn.erp5.org?rev=7158&view=rev
Log:
Implement SetGetter and SetSetter.
Modified:
erp5/trunk/products/ERP5Type/Accessor/Acquired.py
erp5/trunk/products/ERP5Type/Accessor/Category.py
erp5/trunk/products/ERP5Type/Accessor/List.py
erp5/trunk/products/ERP5Type/Accessor/Related.py
erp5/trunk/products/ERP5Type/Accessor/RelatedValue.py
erp5/trunk/products/ERP5Type/Accessor/Value.py
erp5/trunk/products/ERP5Type/Utils.py
Modified: erp5/trunk/products/ERP5Type/Accessor/Acquired.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/Accessor/Acquired.py?rev=7158&r1=7157&r2=7158&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Accessor/Acquired.py (original)
+++ erp5/trunk/products/ERP5Type/Accessor/Acquired.py Wed May 10 17:21:03 2006
@@ -175,4 +175,12 @@
psyco.bind(__call__)
-SetGetter = ListGetter # ERROR
+class SetGetter(ListGetter):
+ """
+ Gets a category value set
+ """
+ def __call__(self, instance, *args, **kw):
+ result_list = ListGetter.__call__(self, instance, *args, **kw)
+ result_set = dict([(x, 0) for x in result_list]).keys()
+ return result_set
+
Modified: erp5/trunk/products/ERP5Type/Accessor/Category.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/Accessor/Category.py?rev=7158&r1=7157&r2=7158&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Accessor/Category.py (original)
+++ erp5/trunk/products/ERP5Type/Accessor/Category.py Wed May 10 17:21:03 2006
@@ -51,9 +51,9 @@
def __call__(self, instance, *args, **kw):
instance._setCategoryMembership(self._key, args[0],
- spec=kw.get('spec',()),
- filter=kw.get('filter', None),
- portal_type=kw.get('portal_type',()))
+ spec=kw.get('spec',()),
+ filter=kw.get('filter', None),
+ portal_type=kw.get('portal_type',()))
if self._reindex: instance.reindexObject()
class DefaultSetter(Method):
@@ -114,9 +114,9 @@
else:
new_list = args[0]
instance._setCategoryMembership(self._key, new_list,
- spec=kw.get('spec',()),
- filter=kw.get('filter', None),
- portal_type=kw.get('portal_type',()))
+ spec=kw.get('spec',()),
+ filter=kw.get('filter', None),
+ portal_type=kw.get('portal_type',()))
if self._reindex: instance.reindexObject()
@@ -174,7 +174,15 @@
return instance._getAcquiredCategoryMembershipList(self._key, **kw)
psyco.bind(__call__)
-SetGetter = ListGetter # XXX ERROR
+class SetGetter(ListGetter):
+ """
+ Gets a category value set
+ """
+ def __call__(self, instance, *args, **kw):
+ result_list = ListGetter.__call__(self, instance, *args, **kw)
+ result_set = dict([(x, 0) for x in result_list]).keys()
+ return result_set
+
# ItemList is outdated XXX -> ItemList
Modified: erp5/trunk/products/ERP5Type/Accessor/List.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/Accessor/List.py?rev=7158&r1=7157&r2=7158&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Accessor/List.py (original)
+++ erp5/trunk/products/ERP5Type/Accessor/List.py Wed May 10 17:21:03 2006
@@ -110,7 +110,7 @@
if not self._reindex:
# Modify the property
if value in self._null:
- setattr(instance, self._storage_id, None)
+ setattr(instance, self._storage_id, ())
elif self._is_tales_type:
setattr(instance, self._storage_id, str(value))
else:
@@ -179,20 +179,35 @@
if len(value) > 0:
list_value = getattr(instance, self._storage_id, None)
if list_value is None: list_value = []
+
+
+
+# if len(list_value) > 0:
+# my_dict = {}
+# default_value = list_value[0]
+# for v in value:
+# my_dict[v] = 0
+# if my_dict.has_key(default_value):
+# del my_dict[default_value]
+# # If we change the set, the default value must be in the new set
+# if default_value in value:
+# new_list_value = [default_value] + my_dict.keys()
+# else:
+# new_list_value = my_dict.keys()
+# else:
+# new_list_value = value
+
if len(list_value) > 0:
- my_dict = {}
default_value = list_value[0]
- for v in value:
- my_dict[v] = 0
- if my_dict.has_key(default_value):
- del my_dict[default_value]
- # If we change the set, the default value must be in the new set
+ my_dict = dict((x, 0) for x in value if x!=default_value)
+ new_list_value = my_dict.keys()
+ # If we change the set,
+ # the default value must be in the new set
if default_value in value:
- new_list_value = [default_value] + my_dict.keys()
- else:
- new_list_value = my_dict.keys()
+ new_list_value.insert(0, default_value)
else:
new_list_value = value
+
else:
# The list has no default property -> it is empty
new_list_value = []
@@ -294,6 +309,15 @@
psyco.bind(__call__)
-SetGetter = ListGetter
+class SetGetter(ListGetter):
+ """
+ Gets an attribute value. A default value can be
+ provided if needed
+ """
+
+ def __call__(self, instance, *args, **kw):
+ result_list = ListGetter.__call__(self, instance, *args, **kw)
+ result_set = dict([(x, 0) for x in result_list]).keys()
+ return result_set
Tester = Base.Tester
Modified: erp5/trunk/products/ERP5Type/Accessor/Related.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/Accessor/Related.py?rev=7158&r1=7157&r2=7158&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Accessor/Related.py (original)
+++ erp5/trunk/products/ERP5Type/Accessor/Related.py Wed May 10 17:21:03 2006
@@ -89,4 +89,12 @@
psyco.bind(__call__)
-SetGetter = ListGetter
+class SetGetter(ListGetter):
+ """
+ Gets a category value set
+ """
+ def __call__(self, instance, *args, **kw):
+ result_list = ListGetter.__call__(self, instance, *args, **kw)
+ result_set = dict([(x, 0) for x in result_list]).keys()
+ return result_set
+
Modified: erp5/trunk/products/ERP5Type/Accessor/RelatedValue.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/Accessor/RelatedValue.py?rev=7158&r1=7157&r2=7158&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Accessor/RelatedValue.py (original)
+++ erp5/trunk/products/ERP5Type/Accessor/RelatedValue.py Wed May 10 17:21:03 2006
@@ -97,7 +97,15 @@
psyco.bind(__call__)
-SetGetter = ListGetter # Error XXX
+class SetGetter(ListGetter):
+ """
+ Gets a category value set
+ """
+ def __call__(self, instance, *args, **kw):
+ result_list = ListGetter.__call__(self, instance, *args, **kw)
+ result_set = dict([(x, 0) for x in result_list]).keys()
+ return result_set
+
class DefaultIdGetter(Method):
"""
@@ -164,7 +172,14 @@
psyco.bind(__call__)
-IdSetGetter = IdListGetter # XXX Error
+class IdSetGetter(IdListGetter):
+ """
+ Gets a category value set
+ """
+ def __call__(self, instance, *args, **kw):
+ result_list = IdListGetter.__call__(self, instance, *args, **kw)
+ result_set = dict([(x, 0) for x in result_list]).keys()
+ return result_set
class DefaultTitleGetter(Method):
"""
@@ -229,7 +244,15 @@
kw.get('strict', None))) # 'strict' is deprecated
psyco.bind(__call__)
-TitleSetGetter = TitleListGetter # XXX Error
+class TitleSetGetter(TitleListGetter):
+ """
+ Gets a category value set
+ """
+ def __call__(self, instance, *args, **kw):
+ result_list = TitleListGetter.__call__(self, instance, *args, **kw)
+ result_set = dict([(x, 0) for x in result_list]).keys()
+ return result_set
+
class DefaultPropertyGetter(Method):
"""
@@ -293,4 +316,12 @@
kw.get('strict', None))) # 'strict' is deprecated
psyco.bind(__call__)
-PropertySetGetter = PropertyListGetter # Error XXX
+class PropertySetGetter(PropertyListGetter):
+ """
+ Gets a category value set
+ """
+ def __call__(self, instance, *args, **kw):
+ result_list = PropertyListGetter.__call__(self, instance, *args, **kw)
+ result_set = dict([(x, 0) for x in result_list]).keys()
+ return result_set
+
Modified: erp5/trunk/products/ERP5Type/Accessor/Value.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/Accessor/Value.py?rev=7158&r1=7157&r2=7158&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Accessor/Value.py (original)
+++ erp5/trunk/products/ERP5Type/Accessor/Value.py Wed May 10 17:21:03 2006
@@ -117,7 +117,15 @@
psyco.bind(__call__)
-SetGetter = ListGetter # Error XXX
+class SetGetter(ListGetter):
+ """
+ Gets a category value set
+ """
+ def __call__(self, instance, *args, **kw):
+ result_list = ListGetter.__call__(self, instance, *args, **kw)
+ result_set = dict([(x, 0) for x in result_list]).keys()
+ return result_set
+
class DefaultTitleGetter(Method):
"""
@@ -175,7 +183,15 @@
psyco.bind(__call__)
-TitleSetGetter = TitleListGetter # Error XXX
+class TitleSetGetter(TitleListGetter):
+ """
+ Gets a category value set
+ """
+ def __call__(self, instance, *args, **kw):
+ result_list = TitleListGetter.__call__(self, instance, *args, **kw)
+ result_set = dict([(x, 0) for x in result_list]).keys()
+ return result_set
+
class DefaultTranslatedTitleGetter(Method):
"""
@@ -233,7 +249,16 @@
psyco.bind(__call__)
-TranslatedTitleSetGetter = TranslatedTitleListGetter # Error XXX
+class TranslatedTitleSetGetter(TranslatedTitleListGetter):
+ """
+ Gets a category value set
+ """
+ def __call__(self, instance, *args, **kw):
+ result_list = TranslatedTitleListGetter.__call__(
+ self, instance, *args, **kw)
+ result_set = dict([(x, 0) for x in result_list]).keys()
+ return result_set
+
class DefaultReferenceGetter(Method):
"""
@@ -291,7 +316,16 @@
psyco.bind(__call__)
-ReferenceSetGetter = ReferenceListGetter # Error XXX
+class ReferenceSetGetter(ReferenceListGetter):
+ """
+ Gets a category value set
+ """
+ def __call__(self, instance, *args, **kw):
+ result_list = ReferenceListGetter.__call__(
+ self, instance, *args, **kw)
+ result_set = dict([(x, 0) for x in result_list]).keys()
+ return result_set
+
class DefaultUidGetter(Method):
"""
@@ -352,7 +386,16 @@
psyco.bind(__call__)
-UidSetGetter = UidListGetter # Error XXX
+class UidSetGetter(UidListGetter):
+ """
+ Gets a category value set
+ """
+ def __call__(self, instance, *args, **kw):
+ result_list = UidListGetter.__call__(
+ self, instance, *args, **kw)
+ result_set = dict([(x, 0) for x in result_list]).keys()
+ return result_set
+
class UidSetter(Method):
"""
@@ -496,7 +539,16 @@
psyco.bind(__call__)
-IdSetGetter = IdListGetter # Error XXX
+class IdSetGetter(IdListGetter):
+ """
+ Gets a category value set
+ """
+ def __call__(self, instance, *args, **kw):
+ result_list = IdListGetter.__call__(
+ self, instance, *args, **kw)
+ result_set = dict([(x, 0) for x in result_list]).keys()
+ return result_set
+
class LogicalPathListGetter(Method):
"""
@@ -523,7 +575,16 @@
portal_type=kw.get('portal_type',()))
]
-LogicalPathSetGetter = LogicalPathListGetter # Error XXX
+class LogicalPathSetGetter(LogicalPathListGetter):
+ """
+ Gets a category value set
+ """
+ def __call__(self, instance, *args, **kw):
+ result_list = LogicalPathListGetter.__call__(
+ self, instance, *args, **kw)
+ result_set = dict([(x, 0) for x in result_list]).keys()
+ return result_set
+
class DefaultPropertyGetter(Method):
"""
@@ -584,4 +645,13 @@
psyco.bind(__call__)
-PropertySetGetter = PropertyListGetter # Error XXX
+class PropertySetGetter(PropertyListGetter):
+ """
+ Gets a category value set
+ """
+ def __call__(self, instance, *args, **kw):
+ result_list = PropertyListGetter.__call__(
+ self, instance, *args, **kw)
+ result_set = dict([(x, 0) for x in result_list]).keys()
+ return result_set
+
Modified: erp5/trunk/products/ERP5Type/Utils.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/Utils.py?rev=7158&r1=7157&r2=7158&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Utils.py (original)
+++ erp5/trunk/products/ERP5Type/Utils.py Wed May 10 17:21:03 2006
@@ -2126,6 +2126,10 @@
setter_name = '_categorySet' + UpperCase(id) + 'Set'
if not hasattr(property_holder, setter_name):
setattr(property_holder, setter_name, setter.dummy_copy(setter_name))
+ setter_name = 'set' + UpperCase(id) + 'Set'
+ if not hasattr(property_holder, setter_name):
+ setattr(property_holder, setter_name, setter.dummy_copy(setter_name))
+ property_holder.security.declareProtected(write_permission, setter_name)
setter_name = '_setDefault' + UpperCase(id)
setter = Category.DefaultSetter(setter_name, id, reindex=0)
More information about the Erp5-report
mailing list