From 45185ca69667d89195993ec6f17e3d29225d3eca Mon Sep 17 00:00:00 2001
From: Vincent Pelletier <vincent@nexedi.com>
Date: Fri, 6 Mar 2009 10:24:36 +0000
Subject: [PATCH] Simplify EntireQuery contructor api. Update caller.

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@25901 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ZSQLCatalog/Query/EntireQuery.py | 28 ++++++++++--------------
 product/ZSQLCatalog/SQLCatalog.py        |  6 ++---
 2 files changed, 15 insertions(+), 19 deletions(-)

diff --git a/product/ZSQLCatalog/Query/EntireQuery.py b/product/ZSQLCatalog/Query/EntireQuery.py
index 37eee743dd..3cdc41839f 100644
--- a/product/ZSQLCatalog/Query/EntireQuery.py
+++ b/product/ZSQLCatalog/Query/EntireQuery.py
@@ -35,6 +35,12 @@ from Products.ZSQLCatalog.Interface.IEntireQuery import IEntireQuery
 from Interface.Verify import verifyClass
 from Products.ZSQLCatalog.SQLCatalog import profiler_decorator
 
+def defaultDict(value):
+  if value is None:
+    return {}
+  assert isinstance(value, dict)
+  return value
+
 class EntireQuery(object):
   """
     This is not a Query subclass, since it does not define a
@@ -47,28 +53,18 @@ class EntireQuery(object):
   column_map = None
 
   @profiler_decorator
-  def __init__(self, query, order_by_list=None, group_by_list=None,
+  def __init__(self, query, order_by_list=(), group_by_list=(),
                select_dict=None, limit=None, catalog_table_name=None,
-               extra_column_list=None, from_expression=None,
+               extra_column_list=(), from_expression=None,
                order_by_override_list=None):
-    def default(value):
-      if value is None:
-        return []
-      assert isinstance(value, (tuple, list))
-      return value
-    def defaultDict(value):
-      if value is None:
-        return {}
-      assert isinstance(value, dict)
-      return value
     self.query = query
-    self.order_by_list = default(order_by_list)
-    self.order_by_override_set = frozenset(default(order_by_override_list))
-    self.group_by_list = default(group_by_list)
+    self.order_by_list = list(order_by_list)
+    self.order_by_override_set = frozenset(order_by_override_list)
+    self.group_by_list = list(group_by_list)
     self.select_dict = defaultDict(select_dict)
     self.limit = limit
     self.catalog_table_name = catalog_table_name
-    self.extra_column_list = default(extra_column_list)
+    self.extra_column_list = list(extra_column_list)
     self.from_expression = from_expression
 
   def asSearchTextExpression(self, sql_catalog):
diff --git a/product/ZSQLCatalog/SQLCatalog.py b/product/ZSQLCatalog/SQLCatalog.py
index d1d47e9782..e66155d6b0 100644
--- a/product/ZSQLCatalog/SQLCatalog.py
+++ b/product/ZSQLCatalog/SQLCatalog.py
@@ -2094,9 +2094,9 @@ class Catalog(Folder,
   @profiler_decorator
   def buildSQLQuery(self, query_table='catalog', REQUEST=None,
                           ignore_empty_string=1, only_group_columns=False,
-                          limit=None, extra_column_list=None,
+                          limit=None, extra_column_list=(),
                           **kw):
-    group_by_list = kw.pop('group_by_list', kw.pop('group_by', kw.pop('group_by_expression', None)))
+    group_by_list = kw.pop('group_by_list', kw.pop('group_by', kw.pop('group_by_expression', ())))
     if isinstance(group_by_list, basestring):
       group_by_list = [x.strip() for x in group_by_list.split(',')]
     select_dict = kw.pop('select_dict', kw.pop('select_list', kw.pop('select_expression', None)))
@@ -2144,7 +2144,7 @@ class Catalog(Folder,
     # It is required to support select_expression_key parameter for backward
     # compatiblity, but I'm not sure if there can be a serious use for it in
     # new API.
-    order_by_override_list = kw.pop('select_expression_key', None)
+    order_by_override_list = kw.pop('select_expression_key', ())
     query = EntireQuery(
       query=self.buildQuery(kw, ignore_empty_string=ignore_empty_string),
       order_by_list=order_by_list,
-- 
2.30.9