Beispiel #1
0
 def validate_ticket(self, req, ticket):
     action = req.args.get('action')
     ticket_system = TicketSystem(self.env)
     links_provider = LinksProvider(self.env)
     remote_tktsys = RemoteTicketSystem(self.env)
     
     for end in ticket_system.link_ends_map:
         check = self.validate_links_exist(ticket, end)
         if check:
             yield None, check
             continue
             
         validator_name = links_provider.get_validator(end)
         if validator_name == 'no_cycle':
             validator = self.validate_no_cycle
         elif (validator_name == 'parent_child' 
               and end == links_provider.PARENT_END):
             validator = self.validate_parent
         else:
             validator = self.validate_any
         
         check = validator(ticket, end)
         if check:
             yield None, check
         
         if action == 'resolve':
             blockers = self.find_blockers(ticket, end, [])
             if blockers:
                 blockers_str = ', '.join('%s:#%s' % rlink
                                          for rlink in unique(blockers))
                 msg = ("Cannot resolve this ticket because it is "
                        "blocked by '%s' tickets [%s]" 
                        % (end,  blockers_str))
                 yield None, msg
Beispiel #2
0
    def validate_ticket(self, req, ticket):
        action = req.args.get('action')
        ticket_system = TicketSystem(self.env)
        links_provider = LinksProvider(self.env)
        remote_tktsys = RemoteTicketSystem(self.env)

        for end in ticket_system.link_ends_map:
            check = self.validate_links_exist(ticket, end)
            if check:
                yield None, check
                continue

            validator_name = links_provider.get_validator(end)
            if validator_name == 'no_cycle':
                validator = self.validate_no_cycle
            elif (validator_name == 'parent_child'
                  and end == links_provider.PARENT_END):
                validator = self.validate_parent
            else:
                validator = self.validate_any

            check = validator(ticket, end)
            if check:
                yield None, check

            if action == 'resolve':
                blockers = self.find_blockers(ticket, end, [])
                if blockers:
                    blockers_str = ', '.join('%s:#%s' % rlink
                                             for rlink in unique(blockers))
                    msg = ("Cannot resolve this ticket because it is "
                           "blocked by '%s' tickets [%s]" %
                           (end, blockers_str))
                    yield None, msg
def uniq(x):
    """Remove duplicated items and return new list.
    If there are duplicated items, first appeared item remains and
    others are removed.

    >>> uniq([1,2,3,3,2,4,1])
    [1, 2, 3, 4]
    """
    return list(unique(x))
Beispiel #4
0
 def parse_links(self, value):
     if not value:
         return []
     return list(
         unique((name, int(id))
                for name, id in self.REMOTES_RE.findall(value)))
Beispiel #5
0
 def parse_links(self, value):
     if not value:
         return []
     return list(unique((name, int(id)) 
                        for name, id in self.REMOTES_RE.findall(value)))