From: Riccardo L. <rl...@us...> - 2003-01-31 18:58:25
|
Update of /cvsroot/collective/CMFOpenflow In directory sc8-pr-cvs1:/tmp/cvs-serv3058 Modified Files: CMFOpenflowTool.py Log Message: Added method countWorkitems Index: CMFOpenflowTool.py =================================================================== RCS file: /cvsroot/collective/CMFOpenflow/CMFOpenflowTool.py,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** CMFOpenflowTool.py 30 Jan 2003 10:24:45 -0000 1.14 --- CMFOpenflowTool.py 31 Jan 2003 18:58:21 -0000 1.15 *************** *** 401,404 **** --- 401,405 ---- if [r for r in REQUEST.AUTHENTICATED_USER.getRolesInContext(self) if r in workitem.push_roles]: if instance.isActiveOrRunning() and not workitem.status == 'completed' and workitem.actor=='': + # check if actor is assignable to workitem's activity workitem.assignTo(actor) else: *************** *** 819,822 **** --- 820,892 ---- self.startSubflow(instance_id, workitem_id) + + security.declareProtected('Use OpenFlow', 'countWorkitems') + def countWorkitems(self, process_id=None, activity_id=None, actor=None): + """ Count the number of workitem """ + #toDo: workitems assigned + #toAssign: workitems not yet assigned + #completed: workitems completed + catalog = self.Catalog + toDo, toAssign, completed= (0, 0, 0) + instances = self.objectValues('Instance') + result=[] + for i in instances: + result = result+i.objectValues('Workitem') + + if process_id and not activity_id and not actor: + toDo = len([w for w in result + if w.process_id==process_id and + w.actor!='' and + (w.status=='active' or w.status=='inactive')]) + toAssign = len([w for w in result if w.process_id==process_id and w.actor=='']) + completed = len([w for w in result if w.process_id==process_id and w.status=='complete']) + elif process_id and not activity_id and actor: + toDo = len([w for w in result + if w.process_id==process_id and + w.actor==actor and + (w.status=='active' or w.status=='inactive')]) + toAssign = len([w for w in result if w.process_id==process_id and w.actor=='']) + completed = len([w for w in result + if w.process_id==process_id and + w.actor==actor and + w.status=='complete']) + elif process_id and activity_id and not actor: + toDo = len([w for w in result + if w.process_id==process_id and + w.activity_id==activity_id and + w.actor!='' and + (w.status=='active' or w.status=='inactive')]) + toAssign = len([w for w in result + if w.process_id==process_id and + w.activity_id==activity_id and + w.actor=='']) + completed = len([w for w in result + if w.process_id==process_id and + w.activity_id==activity_id and + w.status=='complete']) + elif process_id and activity_id and actor: + toDo = len([w for w in result + if w.process_id==process_id and + w.activity_id==activity_id and + w.actor==actor and + (w.status=='active' or w.status=='inactive')]) + toAssign = len([w for w in result + if w.process_id==process_id and + w.activity_id==activity_id and + w.actor=='']) + completed = len([w for w in result + if w.process_id==process_id and + w.activity_id==activity_id and + w.actor==actor and + w.status=='complete']) + else: + toDo = len([w for w in result + if w.actor!='' and + (w.status=='active' or w.status=='inactive')]) + toAssign = len([w for w in result if w.actor=='']) + completed = len([w for w in result if w.status=='complete']) + return {'to do':str(toDo), 'to assign':str(toAssign), 'completed':str(completed)} + + security.declareProtected('Use OpenFlow', 'getUserActionsOnWorkitem') def getUserActionsOnWorkitem(self, instance_id, workitem_id, REQUEST=None): *************** *** 880,883 **** --- 950,958 ---- if workitem.status=='complete' and not workitem.forwarded: actions['Forward'] = absolute_url+'/forwardWorkitem'+parameters + #inactivateWorkitem + if workitem.status=='active': + actions['Inactive'] = absolute_url+'/inactivateWorkitem'+parameters + #Actions that require user to be workitem's actor + if workitem.actor==REQUEST.AUTHENTICATED_USER.getUserName(): #inactivateWorkitem if workitem.status=='active': |