コード例 #1
0
    def test_ignores_other_operations(self):
        """Ignores operations not defined by ConfigurableTicketWorkflow.
        """
        self.env.config.set('ticket-workflow', 'review', 'assigned -> review')
        self.env.config.set('ticket-workflow', 'review.operations',
                            'CodeReview')
        ctw = ConfigurableTicketWorkflow(self.env)
        ticket = Ticket(self.env)
        ticket.populate({'summary': '#13013', 'status': 'assigned'})
        ticket.insert()
        req = MockRequest(self.env)

        self.assertNotIn((0, 'review'), ctw.get_ticket_actions(req, ticket))
コード例 #2
0
ファイル: web_api.py プロジェクト: masaki/TracTaskBoardPlugin
class TaskBoardChangeHandler(Component):
    implements(IRequestHandler)

    def __init__(self):
        self.controller = ConfigurableTicketWorkflow(self.env)

    # IRequestHandler methods

    def match_request(self, req):
        return req.path_info == '/taskboard'

    def process_request(self, req):
        self.env.log.debug("taskboard API received: %s" % req.args)
        if not req.args.get('id') or not req.args.get('status'):
            self._write_response(req, 400, {})
            return

        ticket = Ticket(self.env, int(req.args['id']))
        ticket_available_actions = []
        for weight, action in self.controller.get_ticket_actions(req, ticket):
            changes = self.controller.get_ticket_changes(req, ticket, action)
            if not changes.get('status'):
                continue
            if changes['status'] == req.args['status']:
                ticket_available_actions.append([ weight, action ])
        ticket_available_actions.sort()
        self.env.log.debug("taskboard API actions: %s" % ticket_available_actions)

        if len(ticket_available_actions) > 0:
            actions = ticket_available_actions.pop()
            self._write_response(req, 200, { 'action': actions[1] })
        else:
            self._write_response(req, 400, {})

    def _write_response(self, req, status=200, data={}):
        body = json.dumps(data)
        req.send_response(int(status))
        req.send_header('Content-Type', 'application/json; charset=UTF-8')
        req.send_header('Content-Length', str(len(body)))
        req.send_header('Cache-Control', 'no-cache')
        req.end_headers()
        req.write(body)
コード例 #3
0
 def get_ticket_actions(self, req, ticket):
     actions =  \
         ConfigurableTicketWorkflow.get_ticket_actions(self, req, ticket)
     actions = self.filter_actions(actions, ticket)
     return actions
コード例 #4
0
ファイル: controller.py プロジェクト: nyuhuhuu/trachacks
 def get_ticket_actions(self, req, ticket):        
     actions =  ConfigurableTicketWorkflow.get_ticket_actions(self, req, ticket)        
     actions = self.filter_actions(actions, ticket)
     return actions