[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