Ejemplo n.º 1
0
    def get_blocked_tickets(self):
        """Return all tickets of blocking changesets in order of them
        getting unblocked."""
        tickets = []
        tickets_visited = set([''
                               ])  # merge changesets have empty ticket values

        # restrict changesets to only those not completed
        changesets = self.get_changesets()
        blocking_changeset = self.get_blocking_changeset(changesets)
        if blocking_changeset is None:
            return []
        changesets = changesets[changesets.index(blocking_changeset):]

        # only consider changesets that come after the blocking changeset
        review = self.get_review(blocking_changeset)
        blocking_when = review.changeset_when

        # find blocked tickets
        for changeset in changesets:
            review = self.get_review(changeset)
            for ticket in review.tickets:
                if ticket in tickets_visited:
                    continue
                tickets_visited.add(ticket)

                def get_first_remaining_changeset():
                    for review in self.get_reviews(ticket):
                        if review.changeset in changesets and \
                           review.changeset_when >= blocking_when:
                            return review  # changeset exists on path
                    raise ResourceNotFound("Not found for #%s" % ticket)

                # the ticket's oldest *remaining* changeset determines blockage
                # i.e., if current is already past a changeset, ignore it
                try:
                    first = get_first_remaining_changeset()
                    tkt = Ticket(self.env, ticket)
                    tkt.first_changeset = first.changeset
                    tkt.first_changeset_when = first.changeset_when
                    tickets.append(tkt)
                except ResourceNotFound:
                    pass  # e.g., incorrect ticket reference
        return sorted(tickets, key=lambda t: t.first_changeset_when)
Ejemplo n.º 2
0
 def get_blocked_tickets(self):
     """Return all tickets of blocking changesets in order of them
     getting unblocked."""
     tickets = []
     tickets_visited = set(['']) # merge changesets have empty ticket values
     
     # restrict changesets to only those not completed
     changesets = self.get_changesets()
     blocking_changeset = self.get_blocking_changeset(changesets)
     if blocking_changeset is None:
         return []
     changesets = changesets[changesets.index(blocking_changeset):]
     
     # only consider changesets that come after the blocking changeset
     review = self.get_review(blocking_changeset)
     blocking_when = review.changeset_when
     
     # find blocked tickets
     for changeset in changesets:
         review = self.get_review(changeset)
         for ticket in review.tickets:
             if ticket in tickets_visited:
                 continue
             tickets_visited.add(ticket)
     
             def get_first_remaining_changeset():
                 for review in self.get_reviews(ticket):
                     if review.changeset in changesets and \
                        review.changeset_when >= blocking_when:
                         return review # changeset exists on path
                 raise ResourceNotFound("Not found for #%s" % ticket)
             
             # the ticket's oldest *remaining* changeset determines blockage
             # i.e., if current is already past a changeset, ignore it
             try:
                 first = get_first_remaining_changeset()
                 tkt = Ticket(self.env, ticket)
                 tkt.first_changeset = first.changeset
                 tkt.first_changeset_when = first.changeset_when
                 tickets.append( tkt )
             except ResourceNotFound:
                 pass # e.g., incorrect ticket reference
     return sorted(tickets, key=lambda t: t.first_changeset_when)