Changeset 469


Ignore:
Timestamp:
08/05/10 11:50:22 (14 years ago)
Author:
bas
Message:

improved workflow patch, see #198

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/email2trac.py.in

    r468 r469  
    784784                #  We must use the ticket workflow framework
    785785                #
    786                 if self.parameters.email_triggers_workflow :
    787 
    788                         #print controller.actions['reopen']
    789                         #
    790                         # As reference 
    791                         # req = Mock(href=Href('/'), abs_href=Href('http://www.example.com/'), authname='anonymous', perm=MockPerm(), args={})
    792                         #
    793                         #a = controller.render_ticket_action_control(req, tkt, 'reopen')
    794                         #print 'controller : ', a
    795                         #
    796                         #b = controller.get_all_status()
    797                         #print 'get all status: ', b
    798                         #
    799                         #b = controller.get_ticket_changes(req, tkt, 'reopen')
    800                         #print 'get_ticket_changes :', b
    801 
    802                         workflow = None
    803                         if self.VERSION >= 0.11:
    804 
     786                if self.parameters.email_triggers_workflow and (self.VERSION >= 0.11):
     787
     788                        self.logger.debug('Workflow ticket update fields: ')
     789
     790                        from trac.ticket.default_workflow import ConfigurableTicketWorkflow
     791                        from trac.test import Mock, MockPerm
     792
     793                        req = Mock(authname=self.author, perm=MockPerm(), args={})
     794                        try:
    805795                                workflow = self.parameters['workflow_%s' %tkt['status']]
    806 
     796                        except KeyError:
    807797                                ## fallback for compability (Will be deprecated)
    808798                                #
    809                                 if not workflow:
    810                                         if tkt['status'] in ['closed'] and self.parameters.workflow:
    811                                                 workflow = self.parameters.workflow
     799                                if tkt['status'] in ['closed']:
     800                                        workflow = self.parameters.workflow
     801                                else:   
     802                                        workflow = None
     803
     804                        controller = ConfigurableTicketWorkflow(self.env)
     805                        #print controller.actions
     806                        #print controller.actions.keys()
     807                        #print controller.get_ticket_actions(req, tkt)
     808                        #print controller.actions[workflow]
     809                        #print controller.actions[workflow]['permissions'] is a list
    812810
    813811                        if workflow:
    814                                 ## Execute workflow
    815                                 #
    816                                 from trac.ticket.default_workflow import ConfigurableTicketWorkflow
    817                                 from trac.test import Mock, MockPerm
    818 
    819                                 req = Mock(authname='anonymous', perm=MockPerm(), args={})
    820 
    821                                 controller = ConfigurableTicketWorkflow(self.env)
    822                                 fields = controller.get_ticket_changes(req, tkt, workflow)
    823 
    824                                 self.logger.debug('Workflow ticket update fields: ')
     812
     813                                if self.parameters.ticket_permission_system:
     814
     815                                        if self.check_permission(tkt, controller.actions[workflow]['permissions'][0]):
     816                                                fields = controller.get_ticket_changes(req, tkt, workflow)
     817                                        else:
     818                                                fields = dict()
     819                                                self.logger.info('Reporter: %s has no permission to trigger workflow' %self.author)
     820
     821                                else:
     822                                        fields = controller.get_ticket_changes(req, tkt, workflow)
    825823
    826824                                for key in fields.keys():
     
    828826                                        tkt[key] = fields[key]
    829827
    830                         elif tkt['status'] in ['closed']:
    831                                 ## default when no workflow defined or wrong version of trac
    832                                 #
     828                ## Old pre 0.11 situation
     829                #
     830                elif self.parameters.email_triggers_workflow:
     831                        self.logger.debug('email triggers workflow pre trac 0.11')
     832                        if tkt['status'] in ['closed']:
    833833                                tkt['status'] = 'reopened'
    834834                                tkt['resolution'] = ''
    835835
    836                 # Must we update some ticket fields properties via subjectline
     836                else:
     837                        self.logger.debug('email triggers workflow disabled')
     838
     839                ## Must we update some ticket fields properties via subjectline
    837840                #
    838841                if update_fields:
Note: See TracChangeset for help on using the changeset viewer.