[Erp5-report] r30033 - in /erp5/trunk/products/ZSQLCatalog: ./ interfaces/
nobody at svn.erp5.org
nobody at svn.erp5.org
Tue Oct 27 15:14:04 CET 2009
Author: vincent
Date: Tue Oct 27 15:13:59 2009
New Revision: 30033
URL: http://svn.erp5.org?rev=30033&view=rev
Log:
Split buildSQLQuery into 2 parts: one responsible for building the EntireQuery (and responsible for parameter backward compatibility), and a second to just render that EntireQuery as a dict. This will help testing EntireQuery.
Update interface accordingly.
Modified:
erp5/trunk/products/ZSQLCatalog/SQLCatalog.py
erp5/trunk/products/ZSQLCatalog/interfaces/query_catalog.py
Modified: erp5/trunk/products/ZSQLCatalog/SQLCatalog.py
URL: http://svn.erp5.org/erp5/trunk/products/ZSQLCatalog/SQLCatalog.py?rev=30033&r1=30032&r2=30033&view=diff
==============================================================================
--- erp5/trunk/products/ZSQLCatalog/SQLCatalog.py [utf8] (original)
+++ erp5/trunk/products/ZSQLCatalog/SQLCatalog.py [utf8] Tue Oct 27 15:13:59 2009
@@ -2119,10 +2119,8 @@
return order_by_list
@profiler_decorator
- def buildSQLQuery(self, query_table='catalog', REQUEST=None,
- ignore_empty_string=1, only_group_columns=False,
- limit=None, extra_column_list=(),
- **kw):
+ def buildEntireQuery(self, kw, query_table='catalog', ignore_empty_string=1,
+ limit=None, extra_column_list=()):
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(',')]
@@ -2172,7 +2170,7 @@
# 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', ())
- query = EntireQuery(
+ return EntireQuery(
query=self.buildQuery(kw, ignore_empty_string=ignore_empty_string),
order_by_list=order_by_list,
order_by_override_list=order_by_override_list,
@@ -2182,6 +2180,15 @@
catalog_table_name=query_table,
extra_column_list=extra_column_list,
from_expression=from_expression)
+
+ @profiler_decorator
+ def buildSQLQuery(self, query_table='catalog', REQUEST=None,
+ ignore_empty_string=1, only_group_columns=False,
+ limit=None, extra_column_list=(),
+ **kw):
+ query = self.buildEntireQuery(kw, query_table=query_table,
+ ignore_empty_string=ignore_empty_string, limit=limit,
+ extra_column_list=extra_column_list)
result = query.asSQLExpression(self, only_group_columns).asSQLExpressionDict()
return result
Modified: erp5/trunk/products/ZSQLCatalog/interfaces/query_catalog.py
URL: http://svn.erp5.org/erp5/trunk/products/ZSQLCatalog/interfaces/query_catalog.py?rev=30033&r1=30032&r2=30033&view=diff
==============================================================================
--- erp5/trunk/products/ZSQLCatalog/interfaces/query_catalog.py [utf8] (original)
+++ erp5/trunk/products/ZSQLCatalog/interfaces/query_catalog.py [utf8] Tue Oct 27 15:13:59 2009
@@ -63,10 +63,9 @@
It must be a valid ComplexQuery logical operator ('and', 'or').
"""
- def buildSQLQuery(query_table='catalog', REQUEST=None,
- ignore_empty_string=1, only_group_columns=False,
- limit=None, extra_column_list=None,
- **kw):
+ def buildEntireQuery(kw, query_table='catalog', REQUEST=None,
+ ignore_empty_string=1, limit=None,
+ extra_column_list=None)
"""
Construct and return an instance of EntireQuery class from given
parameters by calling buildQuery.
@@ -137,9 +136,24 @@
This prevents given column from being ignored even if they could not
be mapped.
There is no replacement.
+ """
+
+
+ def buildSQLQuery(query_table='catalog', REQUEST=None,
+ ignore_empty_string=1, only_group_columns=False,
+ limit=None, extra_column_list=None,
+ **kw):
+ """
+ Return an SQLExpression-generated dictionary (see
+ SQLExpression.asSQLExpressionDict). That SQLExpression is generated by
+ an EntireQuery, itself generated by buildEntireQuery from given
+ parameters.
+
only_group_columns
Replaces former stat__ parameter.
Used to globally disalow use of non-group columns in SQL.
+
+ For other parameters, see buildEntireQuery.
"""
def getSearchKey(column, search_key=None):
More information about the Erp5-report
mailing list