[Erp5-report] r35565 fabien - /erp5/trunk/products/ERP5/Document/Predicate.py

nobody at svn.erp5.org nobody at svn.erp5.org
Mon May 24 15:16:42 CEST 2010


Author: fabien
Date: Mon May 24 15:16:41 2010
New Revision: 35565

URL: http://svn.erp5.org?rev=35565&view=rev
Log:
make possible to filter searhResults results (useful to filter by portal_types
in listboxes for example)

Modified:
    erp5/trunk/products/ERP5/Document/Predicate.py

Modified: erp5/trunk/products/ERP5/Document/Predicate.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/Predicate.py?rev=35565&r1=35564&r2=35565&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/Predicate.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Document/Predicate.py [utf8] Mon May 24 15:16:41 2010
@@ -235,7 +235,20 @@
                                            'range' : 'max'
                                          }
       else:
-        catalog_kw[criterion.property] = criterion.identity
+        # if a filter was passed as argument
+        if catalog_kw.has_key(criterion.property):
+          if isinstance(catalog_kw[criterion.property], (tuple, list)):
+            catalog_filter_set = set(catalog_kw[criterion.property])
+          else:
+            catalog_filter_set = set([catalog_kw[criterion.property]])
+          if isinstance(criterion.identity, (tuple, list)):
+            parameter_filter_set = set(criterion.identity)
+          else:
+            parameter_filter_set = set([criterion.identity])
+          catalog_kw[criterion.property] = \
+              list(catalog_filter_set.intersection(parameter_filter_set))
+        else:
+          catalog_kw[criterion.property] = criterion.identity
 
     portal_catalog = getToolByName(self, 'portal_catalog')
 




More information about the Erp5-report mailing list