From 863e9811b4bbc44bbaacdd65e837c360898eaf43 Mon Sep 17 00:00:00 2001
From: Vincent Pelletier <vincent@nexedi.com>
Date: Sun, 3 Feb 2008 07:01:10 +0000
Subject: [PATCH] Factorize self.filter_dict[method_name] lookups. Use an
 ImmutableSet instead of a dict where value = key.

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@19010 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ZSQLCatalog/SQLCatalog.py | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/product/ZSQLCatalog/SQLCatalog.py b/product/ZSQLCatalog/SQLCatalog.py
index 7e16bf3dda..2dfa036e64 100644
--- a/product/ZSQLCatalog/SQLCatalog.py
+++ b/product/ZSQLCatalog/SQLCatalog.py
@@ -44,6 +44,7 @@ from xml.dom.minidom import parse
 from xml.sax.saxutils import escape, quoteattr
 import os
 import md5
+from sets import ImmutableSet
 
 try:
   from Products.CMFCore.Expression import Expression
@@ -1708,15 +1709,15 @@ class Catalog(Folder,
         kw = {}
         if self.isMethodFiltered(method_name):
           catalogged_object_list = []
-          type_list = self.filter_dict[method_name]['type']
-          type_dict = dict(zip(type_list, type_list)) or None
-          expression = self.filter_dict[method_name]['expression_instance']
-          expression_cache_key_list = self.filter_dict[method_name].get('expression_cache_key', '').split()
+          filter = self.filter_dict[method_name]
+          type_set = ImmutableSet(filter['type']) or None
+          expression = filter['expression_instance']
+          expression_cache_key_list = filter.get('expression_cache_key', '').split()
           for object in object_list:
             # We will check if there is an filter on this
             # method, if so we may not call this zsqlMethod
             # for this object
-            if type_dict is not None and object.getPortalType() not in type_dict:
+            if type_set is not None and object.getPortalType() not in type_set:
               continue
             elif expression is not None:
               if expression_cache_key_list:
-- 
2.30.9