Commit 06fa1e65 authored by wenjie.zheng's avatar wenjie.zheng Committed by Sebastien Robin

Base.py: modify workflow getter since workflow_module has been merged with portal_workflow.

parent c866c993
...@@ -125,7 +125,6 @@ def resetRegisteredERP5WorkflowMethod(portal_type=None): ...@@ -125,7 +125,6 @@ def resetRegisteredERP5WorkflowMethod(portal_type=None):
class ERP5WorkflowMethod(Method): class ERP5WorkflowMethod(Method):
### to get the name of the class ### to get the name of the class
### do object.__class__.__name__
def __init__(self, method, id=None, reindex=1): def __init__(self, method, id=None, reindex=1):
self._m = method self._m = method
if id is None: if id is None:
...@@ -147,7 +146,7 @@ class ERP5WorkflowMethod(Method): ...@@ -147,7 +146,7 @@ class ERP5WorkflowMethod(Method):
def __call__(self, instance, *args, **kw): def __call__(self, instance, *args, **kw):
if getattr(self, '__name__', None) in ('getPhysicalPath', 'getId', 'getRef',): if getattr(self, '__name__', None) in ('getPhysicalPath', 'getId',):
return self._m(instance, *args, **kw) return self._m(instance, *args, **kw)
# Build a list of transitions which may need to be invoked # Build a list of transitions which may need to be invoked
...@@ -180,7 +179,7 @@ class ERP5WorkflowMethod(Method): ...@@ -180,7 +179,7 @@ class ERP5WorkflowMethod(Method):
return apply(self.__dict__['_m'], (instance,) + args, kw) return apply(self.__dict__['_m'], (instance,) + args, kw)
try: try:
wf_module = instance.getPortalObject().getDefaultModule("Workflow")### portal_workflow wf_module = instance.getPortalObject().portal_workflow### portal_workflow
except AttributeError: except AttributeError:
return self._m(instance, *arge, **kw) return self._m(instance, *arge, **kw)
...@@ -205,7 +204,7 @@ class ERP5WorkflowMethod(Method): ...@@ -205,7 +204,7 @@ class ERP5WorkflowMethod(Method):
for wf_id, transition_list in valid_transition_item_list: for wf_id, transition_list in valid_transition_item_list:
try: try:
for tr in transition_list: for tr in transition_list:
method = wf_module._getOb(wf_id)._getOb(tr)### _getObjectByRef method = wf_module._getOb(wf_id)._getOb(tr)
method.execute(instance) method.execute(instance)
except ObjectDeleted: except ObjectDeleted:
raise ObjectDeleted(result) raise ObjectDeleted(result)
...@@ -213,7 +212,6 @@ class ERP5WorkflowMethod(Method): ...@@ -213,7 +212,6 @@ class ERP5WorkflowMethod(Method):
raise ObjectMoved(ex.getNewObject(), result) raise ObjectMoved(ex.getNewObject(), result)
def registerERP5TransitionAlways(self, portal_type, workflow_id, transition_id): def registerERP5TransitionAlways(self, portal_type, workflow_id, transition_id):
LOG('register trigger %s in portal type %s'%(transition_id, portal_type), WARNING, 'in Base.py')
transition_list = self._invoke_always.setdefault(portal_type, {}).setdefault(workflow_id, []) transition_list = self._invoke_always.setdefault(portal_type, {}).setdefault(workflow_id, [])
if transition_id not in transition_list: transition_list.append(transition_id) if transition_id not in transition_list: transition_list.append(transition_id)
self.registerERP5() self.registerERP5()
...@@ -658,11 +656,7 @@ def initializePortalTypeERP5WorkflowMethod(ptype_klass, portal_ERP5Workflow): ...@@ -658,11 +656,7 @@ def initializePortalTypeERP5WorkflowMethod(ptype_klass, portal_ERP5Workflow):
ERP5Workflow = wf_module._getOb(ERP5Workflow_id) ERP5Workflow = wf_module._getOb(ERP5Workflow_id)
""" """
for ERP5Workflow in portal_workflow.getWorkflowValueListFor(portal_type_value): for ERP5Workflow in portal_workflow.getWorkflowValueListFor(portal_type_value):
if not ERP5Workflow.isTempObject():
ERP5Workflow_id = ERP5Workflow.getId()### getRef, merge this condiction ERP5Workflow_id = ERP5Workflow.getId()### getRef, merge this condiction
else:
# copatibility for temporary object
ERP5Workflow_id = ERP5Workflow.getTitle()### getRef
workflow_type = ERP5Workflow.__class__.__name__ #zwj: for DC compatibility workflow_type = ERP5Workflow.__class__.__name__ #zwj: for DC compatibility
LOG(" zwj. Found Workflow type = %s"%workflow_type, WARNING, " in Base.py.") LOG(" zwj. Found Workflow type = %s"%workflow_type, WARNING, " in Base.py.")
if workflow_type == 'Workflow' or workflow_type == 'DCWorkflowDefinition': if workflow_type == 'Workflow' or workflow_type == 'DCWorkflowDefinition':
...@@ -685,32 +679,31 @@ def initializePortalTypeERP5WorkflowMethod(ptype_klass, portal_ERP5Workflow): ...@@ -685,32 +679,31 @@ def initializePortalTypeERP5WorkflowMethod(ptype_klass, portal_ERP5Workflow):
Permissions.AccessContentsInformation) Permissions.AccessContentsInformation)
if workflow_type == 'Workflow': if workflow_type == 'Workflow':
LOG('1.1 Generation %s type %s method %s'%(workflow_type, ERP5Workflow_id, method_id), WARNING, ' in Base.py') LOG('1.1 Generation %s type %s method'%(workflow_type, ERP5Workflow_id), WARNING, ' in Base.py')
transition_id_list = [] #ERP5Workflow.objectIds(portal_type='Transition') transition_id_list = [] #ERP5Workflow.objectIds(portal_type='Transition')
transition_list = ERP5Workflow.objectValues(portal_type='Transition') transition_list = ERP5Workflow.objectValues(portal_type='Transition')
for tr in transition_list: for tr in transition_list:
transition_id_list.append(tr.getId())### getRef, this id list is actually a reference list transition_id_list.append('_'.join(tr.getId().split('_')[:-1]))### getRef, this id list is actually a reference list
LOG('1.1.1 transition_id_list = %s'%transition_id_list, WARNING, ' in Base.py') LOG('1.1.1 transition_id_list = %s'%transition_id_list, WARNING, ' in Base.py')
elif workflow_type == 'DCWorkflowDefinition': elif workflow_type == 'DCWorkflowDefinition':
LOG('1.2 Generation %s type %s method %s'%(workflow_type, ERP5Workflow_id, method_id), WARNING, ' in Base.py') LOG('1.2 Generation %s type %s method'%(workflow_type, ERP5Workflow_id), WARNING, ' in Base.py')
transition_id_list = ERP5Workflow.transitions transition_id_list = ERP5Workflow.transitions
transition_list = [] transition_list = []
for transition_id in transition_id_list: for transition_id in transition_id_list:
transition = ERP5Workflow.transitions.get(transition_id) transition = ERP5Workflow.transitions.get(transition_id)
transition_list.append(transition) transition_list.append(transition)
storage = workflow_dict storage = workflow_dict
elif workflow_type == 'Interaction Workflow' or workflow_type == 'InteractionWorkflowDefinition': elif workflow_type == 'Interaction Workflow' or workflow_type == 'InteractionWorkflowDefinition':
LOG(" 2. Found Interaction Workflow :%s"%ERP5Workflow_id, WARNING, " in Base.py.") LOG(" 2. Found Interaction Workflow :%s"%ERP5Workflow_id, WARNING, " in Base.py.")
if workflow_type == 'Interaction Workflow': if workflow_type == 'Interaction Workflow':
LOG('2.1 Generation %s type %s method %s'%(workflow_type, ERP5Workflow_id, method_id), WARNING, ' in Base.py') LOG('2.1 Generation %s type %s method'%(workflow_type, ERP5Workflow_id), WARNING, ' in Base.py')
transition_id_list = [] #ERP5Workflow.objectIds(portal_type='Interaction') ### not sure if it works transition_id_list = [] #ERP5Workflow.objectIds(portal_type='Interaction') ### not sure if it works
transition_list = ERP5Workflow.objectValues(portal_type='Interaction') transition_list = ERP5Workflow.objectValues(portal_type='Interaction')
for tr in transition_list: for tr in transition_list:
transition_id_list.append(tr.getId())### getRef, this id list is actually a reference list transition_id_list.append('_'.join(tr.getId().split('_')[:-1])) # remove suffinx
LOG('2.1.1 transition_id_list = %s'%transition_id_list, WARNING, ' in Base.py') LOG('2.1.1 transition_id_list = %s'%transition_id_list, WARNING, ' in Base.py')
elif workflow_type == 'InteractionWorkflowDefinition': elif workflow_type == 'InteractionWorkflowDefinition':
LOG('2.2 Generation %s type %s method %s'%(workflow_type, ERP5Workflow_id, method_id), WARNING, ' in Base.py') LOG('2.2 Generation %s type %s method'%(workflow_type, ERP5Workflow_id), WARNING, ' in Base.py')
transition_id_list = ERP5Workflow.interactions transition_id_list = ERP5Workflow.interactions
for interaction_id in transition_id_list: for interaction_id in transition_id_list:
interaction = ERP5Workflow.interactions.get(interaction_id) interaction = ERP5Workflow.interactions.get(interaction_id)
...@@ -726,15 +719,11 @@ def initializePortalTypeERP5WorkflowMethod(ptype_klass, portal_ERP5Workflow): ...@@ -726,15 +719,11 @@ def initializePortalTypeERP5WorkflowMethod(ptype_klass, portal_ERP5Workflow):
trigger_dict = {} trigger_dict = {}
for transition in transition_list: for transition in transition_list:
if not transition.isTempObject(): transition_id = transition.getId()
transition_id = transition.getId()### getRef
else:
transition_id = transition.getTitle()### getRef
LOG('4. Found transition %s'%transition_id,WARNING,' in Base.py') LOG('4. Found transition %s'%transition_id,WARNING,' in Base.py')
if transition.trigger_type == TRIGGER_WORKFLOW_METHOD: if transition.trigger_type == TRIGGER_WORKFLOW_METHOD:
LOG('4.1 Accpted transition %s'%transition_id,WARNING,' in Base.py') LOG('4.1 Accpted transition %s'%transition_id,WARNING,' in Base.py')
trigger_dict[transition_id] = transition trigger_dict[transition_id] = transition
storage[ERP5Workflow_id] = (transition_id_set, trigger_dict) storage[ERP5Workflow_id] = (transition_id_set, trigger_dict)
### zwj: generate Workflow methods ### zwj: generate Workflow methods
...@@ -783,7 +772,8 @@ def initializePortalTypeERP5WorkflowMethod(ptype_klass, portal_ERP5Workflow): ...@@ -783,7 +772,8 @@ def initializePortalTypeERP5WorkflowMethod(ptype_klass, portal_ERP5Workflow):
transition_id_set, trigger_dict = v transition_id_set, trigger_dict = v
for tr_id, tdef in trigger_dict.iteritems(): for tr_id, tdef in trigger_dict.iteritems():
# check portal type filter # check portal type filter
type_filter = list(tdef.portal_type_filter) ### not use property sheet accessor for DC compatibility LOG(" 776 transition id is '%s'"%tdef.getId(), WARNING, " in Base.py.")
type_filter = list(tdef.portal_type_filter)
if (type_filter != [] and portal_type not in type_filter): if (type_filter != [] and portal_type not in type_filter):
continue continue
...@@ -3069,9 +3059,9 @@ class Base( CopyContainer, ...@@ -3069,9 +3059,9 @@ class Base( CopyContainer,
def isERP5WorkflowDeleted(self): def isERP5WorkflowDeleted(self):
### zwj: deal with the deleted object ### zwj: deal with the deleted object
for wf_id in self.getTypeInfo().getTypeERP5WorkflowList(): for wf_id in self.getTypeInfo().getTypeERP5WorkflowList():
wf = self.getPortalObject().getDefaultModule('Workflow')._getOb(wf_id)### _getObjectByRef wf = self.getPortalObject().portal_workflow._getOb(wf_id)
state = self._getDefaultAcquiredValue(wf.getStateVariable()) state = self._getDefaultAcquiredValue(wf.getStateVariable())
if state is not None and state.getId() == 'deleted':### getRef if state is not None and state.getId() == 'deleted':
return True return True
return False return False
...@@ -3115,7 +3105,7 @@ class Base( CopyContainer, ...@@ -3115,7 +3105,7 @@ class Base( CopyContainer,
for wf in self.portal_workflow.getWorkflowsFor(self): for wf in self.portal_workflow.getWorkflowsFor(self):
result += [(wf.id, wf._getWorkflowStateOf(self, id_only=1))] result += [(wf.id, wf._getWorkflowStateOf(self, id_only=1))]
for workflow_id in self.getTypeInfo().getTypeERP5WorkflowList(): for workflow_id in self.getTypeInfo().getTypeERP5WorkflowList():
workflow = self.getPortalObject().getDefaultModule('Workflow')._getOb(workflow_id)### _getObjectByRef workflow = self.getPortalObject().portal_workflow._getOb(workflow_id)### _getObjectByRef
if workflow.getPortalType() == 'Workflow': if workflow.getPortalType() == 'Workflow':
result += [(workflow_id, workflow._getWorkflowStateOf(self, id_only=1))] result += [(workflow_id, workflow._getWorkflowStateOf(self, id_only=1))]
return result return result
...@@ -3598,7 +3588,7 @@ class Base( CopyContainer, ...@@ -3598,7 +3588,7 @@ class Base( CopyContainer,
def updateRoleMappingsFor(self, wf_id, **kw): def updateRoleMappingsFor(self, wf_id, **kw):
workflow = self.portal_workflow.getWorkflowById(wf_id) workflow = self.portal_workflow.getWorkflowById(wf_id)
erp5workflow = self.workflow_module._getOb(wf_id, None)### _getObjectByRef erp5workflow = self.portal_workflow._getOb(wf_id, None)### _getObjectByRef
#LOG('zwj: Loading %s'%erp5workflow.getId(), WARNING,'updating roles') #LOG('zwj: Loading %s'%erp5workflow.getId(), WARNING,'updating roles')
if workflow is not None: if workflow is not None:
changed = workflow.updateRoleMappingsFor(self) changed = workflow.updateRoleMappingsFor(self)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment