[Erp5-report] r31954 nicolas - /erp5/trunk/products/ERP5Type/Constraint/

nobody at svn.erp5.org nobody at svn.erp5.org
Mon Jan 25 18:05:29 CET 2010


Author: nicolas
Date: Mon Jan 25 18:05:27 2010
New Revision: 31954

URL: http://svn.erp5.org?rev=31954&view=rev
Log:
Extend Constraint definition to support additional parameters, approved by jerome

Modified:
    erp5/trunk/products/ERP5Type/Constraint/CategoryRelatedMembershipArity.py

Modified: erp5/trunk/products/ERP5Type/Constraint/CategoryRelatedMembershipArity.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/Constraint/CategoryRelatedMembershipArity.py?rev=31954&r1=31953&r2=31954&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Constraint/CategoryRelatedMembershipArity.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/Constraint/CategoryRelatedMembershipArity.py [utf8] Mon Jan 25 18:05:27 2010
@@ -1,6 +1,7 @@
+# -*- coding: utf-8 -*-
 ##############################################################################
 #
-# Copyright (c) 2002, 2005 Nexedi SARL and Contributors. All Rights Reserved.
+# Copyright (c) 2010 Nexedi SA and Contributors. All Rights Reserved.
 #                    Sebastien Robin <seb at nexedi.com>
 #                    Courteaud Romain <romain at nexedi.com>
 #
@@ -48,11 +49,17 @@
       'base_category' : ('causality',)
       'condition'     : 'python: object.getPortalType() == 'Foo',
     },
+
+  additional parameters passed to catalog are accepted:
+    'filter_parameter': {'simulation_state': ('planned',)},
   """
-  
+
   def _calculateArity(self, obj):
     base_category = self.constraint_definition['base_category']
-    portal_type = self.constraint_definition['portal_type']
-    return len(obj._getRelatedValueList(base_category,
-                                        portal_type=portal_type))
+    sql_kw = {'portal_type': self.constraint_definition['portal_type'],
+              '%s_uid' % base_category: obj.getUid()}
+    filter_parameter = self.constraint_definition.get('filter_parameter', {})
+    sql_kw.update(filter_parameter)
+    portal = obj.getPortalObject()
+    return len(portal.portal_catalog.unrestrictedSearchResults(**sql_kw))
 




More information about the Erp5-report mailing list