[Erp5-report] r13205 - in /erp5/trunk/products/CMFCategory: Filter.py Renderer.py

nobody at svn.erp5.org nobody at svn.erp5.org
Sat Mar 3 11:57:39 CET 2007


Author: jp
Date: Sat Mar  3 11:57:30 2007
New Revision: 13205

URL: http://svn.erp5.org?rev=13205&view=rev
Log:
Improved filtering of nodes and leaves

Modified:
    erp5/trunk/products/CMFCategory/Filter.py
    erp5/trunk/products/CMFCategory/Renderer.py

Modified: erp5/trunk/products/CMFCategory/Filter.py
URL: http://svn.erp5.org/erp5/trunk/products/CMFCategory/Filter.py?rev=13205&r1=13204&r2=13205&view=diff
==============================================================================
--- erp5/trunk/products/CMFCategory/Filter.py (original)
+++ erp5/trunk/products/CMFCategory/Filter.py Sat Mar  3 11:57:30 2007
@@ -33,7 +33,8 @@
 
 class Filter(Implicit):
 
-  def __init__(self, spec=None, filter=None, portal_type=None, filter_method=None):
+  def __init__(self, spec=None, filter=None, portal_type=None,
+               filter_method=None, filter_node=0, filter_leave=0):
     """
       Initialize attributes. spec and portal_type can be lists, tuples or strings.
 
@@ -60,12 +61,25 @@
       if len(spec) > 0:
         self.filter_dict['meta_type'] = spec
     self.filter_method = filter_method
+    self.filter_node = filter_node
+    self.filter_leave = filter_leave
 
   def test(self, context):
     """
       Test filter on a context
     """
     #LOG('Filter test', 0, 'context = %s' % repr(context))
+    is_node = None
+    if self.filter_node:
+      is_node = len(context.contentIds(filter={'portal_type' : 'Category'}))
+      if is_node:
+        return 0
+    if self.filter_leave:
+      if is_node is None:
+        # Only recalculate is_node if not already done
+        is_node = len(context.contentIds(filter={'portal_type' : 'Category'}))
+      if not is_node:
+        return 0
     for k, v in self.filter_dict.items():
       #LOG('Filter test', 0, "k = %s, v = %s" % (repr(k), repr(v)))
       if type(v) in (type([]), type(())):

Modified: erp5/trunk/products/CMFCategory/Renderer.py
URL: http://svn.erp5.org/erp5/trunk/products/CMFCategory/Renderer.py?rev=13205&r1=13204&r2=13205&view=diff
==============================================================================
--- erp5/trunk/products/CMFCategory/Renderer.py (original)
+++ erp5/trunk/products/CMFCategory/Renderer.py Sat Mar  3 11:57:30 2007
@@ -41,6 +41,7 @@
   def __init__(self, spec = None, filter = None, portal_type = None,
                      display_id = None, sort_id = None,
                      display_method = None, sort_method = None, filter_method = None,
+                     filter_node=0, filter_leave=0,
                      is_right_display = 0, translate_display = 0, 
                      translatation_domain = None, display_base_category = 0,
                      base_category = None, base = 1,
@@ -50,6 +51,12 @@
                       (getProperty(display_id) -> getDisplayId)
 
     - *display_method*: a callable method which is used to calculate the value to display
+
+    - *filter_method*: a method to filter items in the list
+
+    - *filter_node*: do not keep node categories
+
+    - *filter_leave*: do not keep leave categories
 
     - *sort_id*: the id of the attribute to "call" to calculate the value used for sorting.
                 Sorting is only applied to default ItemList items.
@@ -103,7 +110,8 @@
     """
     #LOG('Renderer', 0, 'spec = %s, filter = %s, portal_type = %s, display_id = %s, sort_id = %s, display_method = %s, sort_method = %s, is_right_display = %s, translate_display = %s, translatation_domain = %s, base_category = %s, base = %s, display_none_category = %s, current_category = %s' % (repr(spec), repr(filter), repr(portal_type), repr(display_id), repr(sort_id), repr(display_method), repr(sort_method), repr(is_right_display), repr(translate_display), repr(translatation_domain), repr(base_category), repr(base), repr(display_none_category), repr(current_category)))
     Filter.__init__(self, spec=spec, filter=filter,
-                    portal_type=portal_type, filter_method=filter_method)
+                    portal_type=portal_type, filter_method=filter_method,
+                    filter_node=filter_node, filter_leave=filter_leave)
     self.display_id = display_id
     self.sort_id = sort_id
     self.display_method = display_method




More information about the Erp5-report mailing list