# -*- coding: utf-8 -*- # # File: TeleServices.py # # Copyright (c) 2007 by CommunesPlone # Generator: ArchGenXML Version 1.5.3 dev/svn # http://plone.org/products/archgenxml # # GNU General Public License (GPL) # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. # __author__ = """Gauthier BASTIEN , Stephan GEULETTE """ __docformat__ = 'plaintext' from Products.CMFCore.utils import getToolByName from Products.DCWorkflow.DCWorkflow import DCWorkflowDefinition from Products.ExternalMethod.ExternalMethod import ExternalMethod from Products.TeleServices.config import * ##code-section create-workflow-module-header #fill in your manual code here ##/code-section create-workflow-module-header productname = 'TeleServices' def setupworkteleservices_workflow(self, workflow): """Define the workteleservices_workflow workflow. """ # Add additional roles to portal portal = getToolByName(self,'portal_url').getPortalObject() data = list(portal.__ac_roles__) for role in ['WorkTSManager']: if not role in data: data.append(role) # add to portal_role_manager # first try to fetch it. if its not there, we probaly have no PAS # or another way to deal with roles was configured. try: prm = portal.acl_users.get('portal_role_manager', None) if prm is not None: try: prm.addRole(role, role, "Added by product 'TeleServices'/workflow 'workteleservices_workflow'") except KeyError: # role already exists pass except AttributeError: pass portal.__ac_roles__ = tuple(data) workflow.setProperties(title='workteleservices_workflow') ##code-section create-workflow-setup-method-header #fill in your manual code here ##/code-section create-workflow-setup-method-header for s in ['transmitted', 'in_treatment', 'closed', 'rejected', 'cancelled', 'pending_confirm']: workflow.states.addState(s) for t in ['transmit', 'treat', 'reject', 'cancel', 'close', 'set_pending', 'correct', 'set_pending_from_transmitted', 'set_transmitted']: workflow.transitions.addTransition(t) for v in ['review_history', 'comments', 'time', 'actor', 'action']: workflow.variables.addVariable(v) workflow.addManagedPermission('Modify portal content') workflow.addManagedPermission('View') workflow.addManagedPermission('Access contents information') workflow.addManagedPermission('TeleServices: WorkTS Review state') for l in []: if not l in workflow.worklists.objectValues(): workflow.worklists.addWorklist(l) ## Initial State workflow.states.setInitialState('pending_confirm') ## States initialization stateDef = workflow.states['transmitted'] stateDef.setProperties(title="""transmitted""", description="""""", transitions=['treat', 'close', 'reject', 'set_pending_from_transmitted']) stateDef.setPermission('Modify portal content', 0, ['Manager', 'WorkTSManager']) stateDef.setPermission('View', 0, ['Manager', 'Owner', 'WorkTSManager']) stateDef.setPermission('Access contents information', 0, ['Manager', 'Owner', 'WorkTSManager']) stateDef.setPermission('TeleServices: WorkTS Review state', 0, ['Manager', 'WorkTSManager']) stateDef = workflow.states['in_treatment'] stateDef.setProperties(title="""in_treatment""", description="""""", transitions=['set_transmitted', 'close', 'reject']) stateDef.setPermission('Modify portal content', 0, ['Manager', 'WorkTSManager']) stateDef.setPermission('View', 0, ['Manager', 'Owner', 'WorkTSManager']) stateDef.setPermission('Access contents information', 0, ['Manager', 'Owner', 'WorkTSManager']) stateDef.setPermission('TeleServices: WorkTS Review state', 0, ['Manager', 'WorkTSManager']) stateDef = workflow.states['closed'] stateDef.setProperties(title="""closed""", description="""""", transitions=['correct', 'set_transmitted']) stateDef.setPermission('Modify portal content', 0, ['Manager', 'WorkTSManager']) stateDef.setPermission('View', 0, ['Manager', 'Owner', 'WorkTSManager']) stateDef.setPermission('Access contents information', 0, ['Manager', 'Owner', 'WorkTSManager']) stateDef.setPermission('TeleServices: WorkTS Review state', 0, ['Manager', 'WorkTSManager']) stateDef = workflow.states['rejected'] stateDef.setProperties(title="""rejected""", description="""""", transitions=['correct', 'set_transmitted']) stateDef.setPermission('Modify portal content', 0, ['Manager', 'WorkTSManager']) stateDef.setPermission('View', 0, ['Manager', 'Owner', 'WorkTSManager']) stateDef.setPermission('Access contents information', 0, ['Manager', 'Owner', 'WorkTSManager']) stateDef.setPermission('TeleServices: WorkTS Review state', 0, ['Manager', 'WorkTSManager']) stateDef = workflow.states['cancelled'] stateDef.setProperties(title="""cancelled""", description="""""", transitions=['set_pending']) stateDef.setPermission('Modify portal content', 0, ['Manager', 'WorkTSManager']) stateDef.setPermission('View', 0, ['Manager', 'Owner', 'WorkTSManager']) stateDef.setPermission('Access contents information', 0, ['Manager', 'Owner', 'WorkTSManager']) stateDef.setPermission('TeleServices: WorkTS Review state', 0, ['Manager', 'WorkTSManager']) stateDef = workflow.states['pending_confirm'] stateDef.setProperties(title="""pending_confirm""", description="""""", transitions=['cancel', 'transmit']) stateDef.setPermission('View', 0, ['Manager', 'WorkTSManager', 'Owner']) stateDef.setPermission('Access contents information', 0, ['Manager', 'WorkTSManager', 'Owner']) stateDef.setPermission('Modify portal content', 0, ['Manager', 'WorkTSManager', 'Owner']) stateDef.setPermission('TeleServices: WorkTS Review state', 0, ['Manager', 'WorkTSManager']) ## Transitions initialization ## Creation of workflow scripts for wf_scriptname in ['afterTransmit']: if not wf_scriptname in workflow.scripts.objectIds(): workflow.scripts._setObject(wf_scriptname, ExternalMethod(wf_scriptname, wf_scriptname, productname + '.workteleservices_workflow_scripts', wf_scriptname)) transitionDef = workflow.transitions['transmit'] transitionDef.setProperties(title="""transmit""", new_state_id="""transmitted""", trigger_type=1, script_name="""""", after_script_name="""afterTransmit""", actbox_name="""transmit""", actbox_url="""""", actbox_category="""workflow""", props={'guard_permissions': 'Modify portal content'}, ) ## Creation of workflow scripts for wf_scriptname in ['afterTreat']: if not wf_scriptname in workflow.scripts.objectIds(): workflow.scripts._setObject(wf_scriptname, ExternalMethod(wf_scriptname, wf_scriptname, productname + '.workteleservices_workflow_scripts', wf_scriptname)) transitionDef = workflow.transitions['treat'] transitionDef.setProperties(title="""treat""", new_state_id="""in_treatment""", trigger_type=1, script_name="""""", after_script_name="""afterTreat""", actbox_name="""treat""", actbox_url="""""", actbox_category="""workflow""", props={'guard_permissions': 'TeleServices: WorkTS Review state'}, ) ## Creation of workflow scripts for wf_scriptname in ['afterReject']: if not wf_scriptname in workflow.scripts.objectIds(): workflow.scripts._setObject(wf_scriptname, ExternalMethod(wf_scriptname, wf_scriptname, productname + '.workteleservices_workflow_scripts', wf_scriptname)) transitionDef = workflow.transitions['reject'] transitionDef.setProperties(title="""reject""", new_state_id="""rejected""", trigger_type=1, script_name="""""", after_script_name="""afterReject""", actbox_name="""reject""", actbox_url="""""", actbox_category="""workflow""", props={'guard_permissions': 'TeleServices: WorkTS Review state'}, ) ## Creation of workflow scripts for wf_scriptname in ['afterCancel']: if not wf_scriptname in workflow.scripts.objectIds(): workflow.scripts._setObject(wf_scriptname, ExternalMethod(wf_scriptname, wf_scriptname, productname + '.workteleservices_workflow_scripts', wf_scriptname)) transitionDef = workflow.transitions['cancel'] transitionDef.setProperties(title="""cancel""", new_state_id="""cancelled""", trigger_type=1, script_name="""""", after_script_name="""afterCancel""", actbox_name="""cancel""", actbox_url="""""", actbox_category="""workflow""", props={'guard_permissions': 'Modify portal content'}, ) ## Creation of workflow scripts for wf_scriptname in ['afterClose']: if not wf_scriptname in workflow.scripts.objectIds(): workflow.scripts._setObject(wf_scriptname, ExternalMethod(wf_scriptname, wf_scriptname, productname + '.workteleservices_workflow_scripts', wf_scriptname)) transitionDef = workflow.transitions['close'] transitionDef.setProperties(title="""close""", new_state_id="""closed""", trigger_type=1, script_name="""""", after_script_name="""afterClose""", actbox_name="""close""", actbox_url="""""", actbox_category="""workflow""", props={'guard_permissions': 'TeleServices: WorkTS Review state'}, ) transitionDef = workflow.transitions['set_pending'] transitionDef.setProperties(title="""set_pending""", new_state_id="""pending_confirm""", trigger_type=1, script_name="""""", after_script_name="""""", actbox_name="""set_pending""", actbox_url="""""", actbox_category="""workflow""", props={'guard_permissions': 'TeleServices: WorkTS Review state'}, ) transitionDef = workflow.transitions['correct'] transitionDef.setProperties(title="""correct""", new_state_id="""in_treatment""", trigger_type=1, script_name="""""", after_script_name="""""", actbox_name="""correct""", actbox_url="""""", actbox_category="""workflow""", props={'guard_permissions': 'TeleServices: WorkTS Review state'}, ) transitionDef = workflow.transitions['set_pending_from_transmitted'] transitionDef.setProperties(title="""set_pending_from_transmitted""", new_state_id="""pending_confirm""", trigger_type=1, script_name="""""", after_script_name="""""", actbox_name="""set_pending_from_transmitted""", actbox_url="""""", actbox_category="""workflow""", props={'guard_permissions': 'TeleServices: Manage TeleServices'}, ) transitionDef = workflow.transitions['set_transmitted'] transitionDef.setProperties(title="""set_transmitted""", new_state_id="""transmitted""", trigger_type=1, script_name="""""", after_script_name="""""", actbox_name="""set_transmitted""", actbox_url="""""", actbox_category="""workflow""", props={'guard_permissions': 'TeleServices: WorkTS Review state'}, ) ## State Variable workflow.variables.setStateVar('review_state') ## Variables initialization variableDef = workflow.variables['review_history'] variableDef.setProperties(description="""Provides access to workflow history""", default_value="""""", default_expr="""state_change/getHistory""", for_catalog=0, for_status=0, update_always=0, props={'guard_permissions': 'Request review; Review portal content'}) variableDef = workflow.variables['comments'] variableDef.setProperties(description="""Comments about the last transition""", default_value="""""", default_expr="""python:state_change.kwargs.get('comment', '')""", for_catalog=0, for_status=1, update_always=1, props=None) variableDef = workflow.variables['time'] variableDef.setProperties(description="""Time of the last transition""", default_value="""""", default_expr="""state_change/getDateTime""", for_catalog=0, for_status=1, update_always=1, props=None) variableDef = workflow.variables['actor'] variableDef.setProperties(description="""The ID of the user who performed the last transition""", default_value="""""", default_expr="""user/getId""", for_catalog=0, for_status=1, update_always=1, props=None) variableDef = workflow.variables['action'] variableDef.setProperties(description="""The last transition""", default_value="""""", default_expr="""transition/getId|nothing""", for_catalog=0, for_status=1, update_always=1, props=None) ## Worklists Initialization # WARNING: below protected section is deprecated. # Add a tagged value 'worklist' with the worklist name to your state(s) instead. ##code-section create-workflow-setup-method-footer #fill in your manual code here ##/code-section create-workflow-setup-method-footer def createworkteleservices_workflow(self, id): """Create the workflow for TeleServices. """ ob = DCWorkflowDefinition(id) setupworkteleservices_workflow(self, ob) return ob #addWorkflowFactory(createworkteleservices_workflow, # id='workteleservices_workflow', # title='workteleservices_workflow') ##code-section create-workflow-module-footer #fill in your manual code here ##/code-section create-workflow-module-footer