Beispiel #1
0
    def get_ticket(self, sha):
        match = self.match_or_error(sha)
        parent, fullsha = os.path.split(match)
        rel = os.path.basename(parent)

        contents = self.repo.git.cat_file(['-p', it.ITDB_BRANCH + ':' + match])
        i = ticket.create_from_lines(contents.split("\n"), fullsha, rel, True)
        return (i, rel, fullsha, match)
Beispiel #2
0
 def get_ticket(self, sha):
     match = self.match_or_error(sha)
     contents = git.cat_file(it.ITDB_BRANCH + ':' + match)
     parent, fullsha = os.path.split(match)
     rel = os.path.basename(parent)
     sha7 = misc.chop(fullsha, 7)
     i = ticket.create_from_lines(contents, fullsha, rel)
     return (i, rel, fullsha, match)
Beispiel #3
0
 def get_ticket(self, sha):
     match = self.match_or_error(sha)
     contents = git.cat_file(it.ITDB_BRANCH + ':' + match)
     parent, fullsha = os.path.split(match)
     rel = os.path.basename(parent)
     sha7 = misc.chop(fullsha, 7)
     i = ticket.create_from_lines(contents, fullsha, rel, True)
     return (i, rel, fullsha, match)
Beispiel #4
0
    def list(self, show_types=['open', 'test'], releases_filter=[]):
        self.require_itdb()
        base_tree = self.repo.heads[it.ITDB_BRANCH].commit.tree[it.TICKET_DIR]
        releasedirs = [(x.mode, x.type, x.hexsha, x.name)
                       for x in base_tree.trees]

        # Filter releases
        if releases_filter:
            filtered = []
            for dir in releasedirs:
                _, _, _, name = dir
                if name in releases_filter:
                    filtered.append(dir)
            releasedirs = filtered

        # Show message if no tickets there
        if len(releasedirs) == 0:
            print("No tickets yet. Use 'it new' to add new tickets.")
            return

        # Collect tickets assigned to self on the way
        inbox = []

        print_count = 0
        releasedirs.sort(cmp_by_release_dir)
        fullname = self.get_cfg('name', section='user', default='Anonymous')
        for _, _, sha, rel in releasedirs:
            rel_tree = self.repo.heads[it.ITDB_BRANCH].commit.tree[
                it.TICKET_DIR]
            for dir in rel.split('/'):
                rel_tree = rel_tree[dir]
            ticketfiles = [(x.mode, x.type, x.hexsha, x.name)
                           for x in rel_tree.blobs]

            tickets = [ ticket.create_from_lines(\
                        self.repo.git.cat_file(['-p', sha]).split("\n"), \
                        ticket_id, rel, True) \
                    for _, type, sha, ticket_id in ticketfiles \
                    if type == 'blob' and ticket_id != it.HOLD_FILE \
            ]

            # Store the tickets in the inbox if neccessary
            inbox += filter(lambda t: t.is_mine(fullname), tickets)

            print_count += self.__print_ticket_rows(rel, tickets, show_types,
                                                    True, True)

        print_count += self.__print_ticket_rows(
            'INBOX', inbox, (show_types == ['open', 'test']) and ['open']
            or show_types, False, False)

        if print_count == 0:
            print("Use the -a flag to show all tickets")
Beispiel #5
0
    def list(self, show_types=['open', 'test'], releases_filter=[]):
        self.require_itdb()
        releasedirs = filter(lambda x: x[1] == 'tree', git.tree(it.ITDB_BRANCH + \
                                                                                                                 ':' + it.TICKET_DIR))

        # Filter releases
        if releases_filter:
            filtered = []
            for dir in releasedirs:
                _, _, _, name = dir
                if name in releases_filter:
                    filtered.append(dir)
            releasedirs = filtered

        # Show message if no tickets there
        if len(releasedirs) == 0:
            print 'no tickets yet. use \'it new\' to add new tickets.'
            return

        # Collect tickets assigned to self on the way
        inbox = []

        print_count = 0
        releasedirs.sort(cmp_by_release_dir)
        for _, _, sha, rel in releasedirs:
            reldir = os.path.join(it.TICKET_DIR, rel)
            ticketfiles = git.tree(it.ITDB_BRANCH + ':' + reldir)
            tickets = [ ticket.create_from_lines(git.cat_file(sha), ticket_id, rel, True) \
                                    for _, type, sha, ticket_id in ticketfiles \
                                    if type == 'blob' and ticket_id != it.HOLD_FILE \
                                ]

            # Store the tickets in the inbox if neccessary
            inbox += filter(lambda t: t.is_mine(), tickets)

            print_count += self.__print_ticket_rows(rel, tickets, show_types,
                                                    True, True)

        print_count += self.__print_ticket_rows(
            'INBOX', inbox, (show_types == ['open', 'test']) and ['open']
            or show_types, False, False)

        if print_count == 0:
            print 'use the -a flag to show all tickets'
Beispiel #6
0
    def list(self, show_types = ['open', 'test'], releases_filter = []):
        self.require_itdb()
        releasedirs = filter(lambda x: x[1] == 'tree', git.tree(it.ITDB_BRANCH + \
                                                                                                                 ':' + it.TICKET_DIR))

        # Filter releases
        if releases_filter:
            filtered = []
            for dir in releasedirs:
                _, _, _, name = dir
                if name in releases_filter:
                    filtered.append(dir)
            releasedirs = filtered

        # Show message if no tickets there
        if len(releasedirs) == 0:
            print 'no tickets yet. use \'it new\' to add new tickets.'
            return

        # Collect tickets assigned to self on the way
        inbox = []

        print_count = 0
        releasedirs.sort(cmp_by_release_dir)
        for _, _, sha, rel in releasedirs:
            reldir = os.path.join(it.TICKET_DIR, rel)
            ticketfiles = git.tree(it.ITDB_BRANCH + ':' + reldir)
            tickets = [ ticket.create_from_lines(git.cat_file(sha), ticket_id, rel, True) \
                                    for _, type, sha, ticket_id in ticketfiles \
                                    if type == 'blob' and ticket_id != it.HOLD_FILE \
                                ]

            # Store the tickets in the inbox if neccessary
            inbox += filter(lambda t: t.is_mine(), tickets)

            print_count += self.__print_ticket_rows(rel, tickets, show_types, True, True)

        print_count += self.__print_ticket_rows('INBOX', inbox, (show_types == ['open','test']) and ['open'] or show_types, False, False)

        if print_count == 0:
            print 'use the -a flag to show all tickets'