[Erp5-report] r44063 nicolas - /erp5/trunk/products/ERP5Type/patches/WorkflowTool.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Wed Mar 9 09:55:28 CET 2011
Author: nicolas
Date: Wed Mar 9 09:55:28 2011
New Revision: 44063
URL: http://svn.erp5.org?rev=44063&view=rev
Log:
Replace manualy computed dictionary by dynamic method of catalog object isValidColumn.
This allows to recognize automatic related_keys when they are used.
isValidColumn is transactional safe, cached and consistent with RelatedKey API
This improvement is similar as r42716
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=44063&r1=44062&r2=44063&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/patches/WorkflowTool.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/patches/WorkflowTool.py [utf8] Wed Mar 9 09:55:28 2011
@@ -110,12 +110,13 @@ class ExclusionTuple(tuple):
"""
pass
-def getValidCriterionDict(worklist_match_dict, acceptable_key_dict,
+def getValidCriterionDict(worklist_match_dict, sql_catalog,
workflow_worklist_key):
valid_criterion_dict = {}
metadata = None
+ isValidColumn = sql_catalog.isValidColumn
for criterion_id, criterion_value in worklist_match_dict.iteritems():
- if criterion_id in acceptable_key_dict:
+ if isValidColumn(criterion_id):
if isinstance(criterion_value, tuple):
criterion_value = list(criterion_value)
assert criterion_id not in valid_criterion_dict
@@ -141,7 +142,7 @@ def updateWorklistSetDict(worklist_set_d
worklist_set_dict[worklist_set_dict_key]\
[workflow_worklist_key] = valid_criterion_dict
-def groupWorklistListByCondition(worklist_dict, acceptable_key_dict,
+def groupWorklistListByCondition(worklist_dict, sql_catalog,
getSecurityUidListAndRoleColumnDict=None):
"""
Get a list of dict of WorklistVariableMatchDict grouped by compatible
@@ -216,7 +217,7 @@ def groupWorklistListByCondition(worklis
role_column_dict.iteritems():
valid_criterion_dict, metadata = getValidCriterionDict(
worklist_match_dict=worklist_match_dict,
- acceptable_key_dict=acceptable_key_dict,
+ sql_catalog=sql_catalog,
workflow_worklist_key=workflow_worklist_key)
if metadata is not None:
metadata_dict[workflow_worklist_key] = metadata
@@ -467,16 +468,12 @@ def WorkflowTool_listActions(self, info=
def _getWorklistActionList():
worklist_result_dict = {}
sql_catalog = portal_catalog.getSQLCatalog()
- acceptable_key_dict = sql_catalog.getColumnMap().copy()
- for related_key in sql_catalog.getSQLCatalogRelatedKeyList():
- related_key = related_key.split('|')
- acceptable_key_dict[related_key[0].strip()] = related_key[1].strip()
# Get a list of dict of WorklistVariableMatchDict grouped by compatible
# conditions
(worklist_list_grouped_by_condition, worklist_metadata) = \
groupWorklistListByCondition(
worklist_dict=worklist_dict,
- acceptable_key_dict=acceptable_key_dict,
+ sql_catalog=sql_catalog,
getSecurityUidListAndRoleColumnDict=\
getSecurityUidListAndRoleColumnDict)
if src__:
@@ -609,9 +606,6 @@ def WorkflowTool_refreshWorklistCache(se
portal_catalog = getToolByName(self, 'portal_catalog')
search_result = portal_catalog.unrestrictedSearchResults
sql_catalog = portal_catalog.getSQLCatalog()
- acceptable_key_dict = sql_catalog.getColumnMap()
- # XXX: those hardcoded lists should be grabbed from the table dynamicaly
- # (and cached).
table_column_id_set = ImmutableSet(
[COUNT_COLUMN_TITLE] + self.Base_getWorklistTableColumnIDList())
security_column_id_list = ['security_uid'] + \
@@ -620,7 +614,7 @@ def WorkflowTool_refreshWorklistCache(se
(worklist_list_grouped_by_condition, worklist_metadata) = \
groupWorklistListByCondition(
worklist_dict=worklist_dict,
- acceptable_key_dict=acceptable_key_dict)
+ sql_catalog=sql_catalog)
assert COUNT_COLUMN_TITLE in table_column_id_set
for grouped_worklist_dict in worklist_list_grouped_by_condition:
# Generate the query for this worklist_list
More information about the Erp5-report
mailing list