[Erp5-report] r25093 - /erp5/trunk/products/ERP5Type/patches/WorkflowTool.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Tue Jan 13 14:23:35 CET 2009
Author: vincent
Date: Tue Jan 13 14:23:31 2009
New Revision: 25093
URL: http://svn.erp5.org?rev=25093&view=rev
Log:
Add support for future Query API, which resolves related keys internaly, thus removing the need for manual mapping here.
Modified:
erp5/trunk/products/ERP5Type/patches/WorkflowTool.py
Modified: erp5/trunk/products/ERP5Type/patches/WorkflowTool.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/patches/WorkflowTool.py?rev=25093&r1=25092&r2=25093&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/patches/WorkflowTool.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/patches/WorkflowTool.py [utf8] Tue Jan 13 14:23:31 2009
@@ -482,36 +482,44 @@
# Generate the query for this worklist_list
(total_criterion_id_list, query) = \
getWorklistListQuery(grouped_worklist_dict=grouped_worklist_dict)
- # We must compute alias names ourselves because we need to know them
- # in order to compute 'select_expression'.
- related_table_map_dict = query.getRelatedTableMapDict()
- # In order to support related keys, the select expression must be
- # completely explicited, to avoid conflicts.
- select_expression = [select_expression_prefix]
- for criterion_id in total_criterion_id_list:
- mapped_key = acceptable_key_dict[criterion_id]
- if use_cache: # no support for related keys
- select_expression.append(criterion_id)
- continue
- elif isinstance(mapped_key, str): # related key
- mapped_key = mapped_key.split('/')
- related_table_map_dict[criterion_id] = table_alias_list = tuple(
- (table_id, '%s_%s' % (criterion_id, i))
- for i, table_id in enumerate(mapped_key[0].split(',')))
- table_id, column_id = table_alias_list[-1][1], mapped_key[1]
- else: # normal column
- if len(mapped_key) == 1:
- table_id = mapped_key[0]
- else:
- table_id = 'catalog'
- assert table_id in mapped_key
- column_id = criterion_id
- select_expression.append('%s.%s as %s'
- % (table_id, column_id, criterion_id))
- query.getRelatedTableMapDict = lambda: related_table_map_dict
group_by_expression = ', '.join(total_criterion_id_list)
assert COUNT_COLUMN_TITLE not in total_criterion_id_list
- select_expression = ', '.join(select_expression)
+ getRelatedTableMapDict = getattr(query, 'getRelatedTableMapDict', None)
+ if getRelatedTableMapDict is None:
+ # If required mapping method is not present on the query, assume it
+ # handles column mapping properly, and build a bare select
+ # expression.
+ select_expression = select_expression_prefix + ', ' \
+ + group_by_expression
+ else:
+ # We must compute alias names ourselves because we need to know them
+ # in order to compute 'select_expression'.
+ related_table_map_dict = query.getRelatedTableMapDict()
+ # In order to support related keys, the select expression must be
+ # completely explicited, to avoid conflicts.
+ select_expression = [select_expression_prefix]
+ for criterion_id in total_criterion_id_list:
+ mapped_key = acceptable_key_dict[criterion_id]
+ if use_cache: # no support for related keys
+ select_expression.append(criterion_id)
+ continue
+ elif isinstance(mapped_key, str): # related key
+ mapped_key = mapped_key.split('/')
+ related_table_map_dict[criterion_id] = table_alias_list = tuple(
+ (table_id, '%s_%s' % (criterion_id, i))
+ for i, table_id in enumerate(mapped_key[0].split(',')))
+ table_id, column_id = table_alias_list[-1][1], mapped_key[1]
+ else: # normal column
+ if len(mapped_key) == 1:
+ table_id = mapped_key[0]
+ else:
+ table_id = 'catalog'
+ assert table_id in mapped_key
+ column_id = criterion_id
+ select_expression.append('%s.%s as %s'
+ % (table_id, column_id, criterion_id))
+ query.getRelatedTableMapDict = lambda: related_table_map_dict
+ select_expression = ', '.join(select_expression)
try:
catalog_brain_result = search_result(
select_expression=select_expression,
More information about the Erp5-report
mailing list