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))
def parse_links(self, value): if not value: return [] return list( unique((name, int(id)) for name, id in self.REMOTES_RE.findall(value)))
def parse_links(self, value): if not value: return [] return list(unique((name, int(id)) for name, id in self.REMOTES_RE.findall(value)))