Example #1
0
 def find_blockers(self, ticket, field, blockers):
     remote_tktsys = RemoteTicketSystem(self.env)
     links = remote_tktsys.parse_links(ticket[field])
     for remote_name, link in links:
         linked_ticket = RemoteTicket(self.env, remote_name, link)
         if linked_ticket['status'] != 'closed':
             blockers.append((remote_name, link))
         else:
             self.find_blockers(linked_ticket, field, blockers)
     return blockers
Example #2
0
 def find_blockers(self, ticket, field, blockers):
     remote_tktsys = RemoteTicketSystem(self.env)
     links = remote_tktsys.parse_links(ticket[field])
     for remote_name, link in links:
         linked_ticket = RemoteTicket(self.env, remote_name, link)
         if linked_ticket['status'] != 'closed':
             blockers.append((remote_name, link))
         else:
             self.find_blockers(linked_ticket, field, blockers)
     return blockers
Example #3
0
 def validate_links_exist(self, ticket, end):
     remote_tktsys = RemoteTicketSystem(self.env)
     links = remote_tktsys.parse_links(ticket[end])
     bad_links = []
     for remote_name, link in links:
         try:
             tkt = RemoteTicket(self.env, remote_name, link)
         except ResourceNotFound:
             bad_links.append((remote_name, link))
     if bad_links:
         return ("Remote tickets linked in '%s' could not be found: [%s]"
                 % (end, ', '.join('%s:#%s' % t for t in bad_links)))
Example #4
0
 def validate_links_exist(self, ticket, end):
     remote_tktsys = RemoteTicketSystem(self.env)
     links = remote_tktsys.parse_links(ticket[end])
     bad_links = []
     for remote_name, link in links:
         try:
             tkt = RemoteTicket(self.env, remote_name, link)
         except ResourceNotFound:
             bad_links.append((remote_name, link))
     if bad_links:
         return ("Remote tickets linked in '%s' could not be found: [%s]" %
                 (end, ', '.join('%s:#%s' % t for t in bad_links)))
Example #5
0
 def find_cycle(self, ticket, field, path):
     tkt_ref = '%s:#%s' % (getattr(ticket, 'remote_name', ''), ticket.id)
     if tkt_ref in path:
         path.append(tkt_ref)
         return path
     
     path.append(tkt_ref)
     
     remote_tktsys = RemoteTicketSystem(self.env)
     links = remote_tktsys.parse_links(ticket[field])
     for remote_name, link in links:
         linked_ticket = RemoteTicket(self.env, remote_name, link)
         cycle = self.find_cycle(linked_ticket, field, copy(path))
         if cycle != None:
             return cycle
     return None
Example #6
0
    def find_cycle(self, ticket, field, path):
        tkt_ref = '%s:#%s' % (getattr(ticket, 'remote_name', ''), ticket.id)
        if tkt_ref in path:
            path.append(tkt_ref)
            return path

        path.append(tkt_ref)

        remote_tktsys = RemoteTicketSystem(self.env)
        links = remote_tktsys.parse_links(ticket[field])
        for remote_name, link in links:
            linked_ticket = RemoteTicket(self.env, remote_name, link)
            cycle = self.find_cycle(linked_ticket, field, copy(path))
            if cycle != None:
                return cycle
        return None
Example #7
0
 def _remote_tickets(self, ticket, context):
     link_fields = [f for f in ticket.fields if f['type'] == 'link']
     rts = RemoteTicketSystem(self.env)
     
     linked_tickets = []
     linked_rejects = []
     for field in link_fields:
         for link_name, link in rts.parse_links(ticket[field['name']]):
             tkt_fmt = format_to_oneliner(self.env, context,
                                          '%s:#%s' % (link_name, link))
             try:
                 tkt = RemoteTicket(self.env, link_name, link)
                 linked_tickets.append((field['label'], tkt_fmt, tkt))
             except ResourceNotFound:
                 linked_rejects.append((field['label'], tkt_fmt))
     
     return linked_tickets, linked_rejects