• Vincent Pelletier's avatar
    First: Sorry for this monster patch, I find no way to split it semanticaly · e1a86a00
    Vincent Pelletier authored
    without introducing unneeded diffs.
    
    Fix the bug where results are not properly separated by local roles when
    mutilple worklists exist for the same role (causing worklists to appear as
    containing too many documents).
    Implies:
       Expand security at groupWorklistListByCondition level.
       Handle each security-related catalog column as a distinct worklist
       combination of worklist parameters. (for example, a worklists with local
       roles Owner and Assignor would require a match on both the "owner" and the
       "security_uid" catalog columns).
       Implies:
         Each security criterion must be used once positively and negatively
         thereafter to prevent a line from matching multiple queries.
         Implies:
           Implement ExclusionList and ExclusionTuple, two dummy classes to
           contain criterions to be negated in queries (as in 'NOT IN ...' instead
           of 'IN ...'), and use them in groupWorklistListByCondition and
           generateNestedQuery.
         Security criterions must be part of the match when summing up all results
         Implies:
           Sums must be done across multiple loops in
           worklist_list_grouped_by_condition.
           Separate metadata from worklist grouping by criterion, so that suming-
           up worklists results can be done in one run.
           Implies:
             workflow_worklist_key is now computed early in
             groupWorklistListByCondition.
             generateActionList now takes a non-grouped metadata dict and is only
             run once.
    Update groupWorklistListByCondition docstring.
    Remove unneeded checks for SECURITY_PARAMETER_ID, WORKLIST_METADATA_KEY and
    INTERNAL_CRITERION_KEY_LIST.
    Remove now unused INTERNAL_CRITERION_KEY_LIST global.
    Remove unused generateQueryFromTuple method.
    Remove unused securityQueryHook local method, instead
    getSecurityUidListAndRoleColumnDict is passed at groupWorklistListByCondition
    level.
    Finally, re-enable worklist optimisation monkey patch.
    
    
    git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@17119 20353a03-c40f-0410-a6d1-a30d3c3de9de
    e1a86a00
WorkflowTool.py 20.5 KB