Ejemplo n.º 1
0
    def perform(self, packages=None, supersede=False):
        """
        Perform the list command
        """

        if supersede:
            self.api.dispatch_open_requests(packages)

        requests = self.api.get_open_requests()
        requests_ignored = self.api.get_ignored_requests()

        splitter = RequestSplitter(self.api, requests, in_ring=True)
        splitter.filter_add('./action[@type="change_devel"]')
        change_devel_requests = splitter.filter_only()
        splitter.reset()

        splitter.filter_add('./action[not(@type="add_role" or @type="change_devel")]')
        splitter.group_by('./action/target/@devel_project')
        splitter.split()

        is_factory = self.api.project != 'openSUSE:Factory'
        for group in sorted(splitter.grouped.keys()):
            print group

            for request in splitter.grouped[group]['requests']:
                request_id = int(request.get('id'))
                action = request.find('action')
                target_package = action.find('target').get('package')
                ring = action.find('target').get('ring')
                if action.get('type') == 'delete':
                    ring += ' (delete request)'

                line = 'sr#{}: {:<30} -> {:<12}'.format(request_id, target_package, ring)

                if is_factory and action.find('source') != None:
                    source_project = action.find('source').get('project')
                    source_project = self.project_strip(source_project)
                    line += ' ({})'.format(source_project)

                if request_id in requests_ignored:
                    line += '\n    ignored: ' + str(requests_ignored[request_id])

                print ' ', line

        if len(splitter.other):
            non_ring_packages = []
            for request in splitter.other:
                non_ring_packages.append(request.find('./action/target').get('package'))
            print 'Not in a ring:', ' '.join(sorted(non_ring_packages))

        if len(change_devel_requests):
            print '\nChange devel requests:'
            for request in change_devel_requests:
                target_package = request.find('./action/target').get('package')
                url = self.api.makeurl(['request', 'show', request.get('id')])
                print('- request({}): {}'.format(target_package, url))
Ejemplo n.º 2
0
    def perform(self, supersede=False):
        """
        Perform the list command
        """

        if supersede:
            SupersedeCommand(self.api).perform()

        requests = self.api.get_open_requests()
        if not len(requests): return

        splitter = RequestSplitter(self.api, requests, in_ring=True)
        splitter.group_by('./action/target/@devel_project')
        splitter.split()

        hide_source = self.api.project == 'openSUSE:Factory'
        for group in sorted(splitter.grouped.keys()):
            print(Fore.YELLOW + group)

            for request in splitter.grouped[group]['requests']:
                request_id = int(request.get('id'))
                action = request.find('action')
                target_package = action.find('target').get('package')
                ring = action.find('target').get('ring')
                ring_color = Fore.MAGENTA if ring.startswith('0') else ''

                line = '{} {}{:<30}{} -> {}{:<12}{}'.format(
                    request_id, Fore.CYAN, target_package, Fore.RESET,
                    ring_color, ring, Fore.RESET)

                if not hide_source and action.find('source') != None:
                    source_project = action.find('source').get('project')
                    source_project = self.project_strip(source_project)
                    line += ' ({})'.format(Fore.YELLOW + source_project + Fore.RESET)
                if action.get('type') == 'delete':
                    line += ' (' + Fore.RED + 'delete request' + Fore.RESET + ')'

                message = self.api.ignore_format(request_id)
                if message:
                    line += '\n' + Fore.WHITE + message + Fore.RESET

                print(' ' + line)

        if len(splitter.other):
            non_ring_packages = []
            for request in splitter.other:
                non_ring_packages.append(request.find('./action/target').get('package'))
            print('Not in a ring: ' + ' '.join(sorted(non_ring_packages)))

        # Print requests not handled by staging process to highlight them.
        splitter.stageable = False
        for request_type in ('change_devel', 'set_bugowner'):
            splitter.reset()
            splitter.filter_add('./action[@type="{}"]'.format(request_type))
            requests = splitter.filter_only()
            if len(requests):
                print('\n{} request(s)'.format(request_type))
                for request in sorted(requests, key=lambda s: s.get('id')):
                    print('  {} {}'.format(
                        self.api.makeurl(['request', 'show', request.get('id')]),
                        request.find('./action/target').get('package')))
Ejemplo n.º 3
0
    def perform(self, supersede=False):
        """
        Perform the list command
        """

        if supersede:
            SupersedeCommand(self.api).perform()

        requests = self.api.get_open_requests()
        if not len(requests): return

        splitter = RequestSplitter(self.api, requests, in_ring=True)
        splitter.filter_add('./action[@type="submit" or @type="delete"]')
        splitter.group_by('./action/target/@devel_project')
        splitter.split()

        hide_source = self.api.project == 'openSUSE:Factory'
        for group in sorted(splitter.grouped.keys()):
            print Fore.YELLOW + group

            for request in splitter.grouped[group]['requests']:
                request_id = int(request.get('id'))
                action = request.find('action')
                target_package = action.find('target').get('package')
                ring = action.find('target').get('ring')
                ring_color = Fore.MAGENTA if ring.startswith('0') else ''

                line = '{} {}{:<30}{} -> {}{:<12}{}'.format(
                    request_id, Fore.CYAN, target_package, Fore.RESET,
                    ring_color, ring, Fore.RESET)

                if not hide_source and action.find('source') != None:
                    source_project = action.find('source').get('project')
                    source_project = self.project_strip(source_project)
                    line += ' ({})'.format(Fore.YELLOW + source_project +
                                           Fore.RESET)
                if action.get('type') == 'delete':
                    line += ' (' + Fore.RED + 'delete request' + Fore.RESET + ')'

                message = self.api.ignore_format(request_id)
                if message:
                    line += '\n' + Fore.WHITE + message + Fore.RESET

                print ' ', line

        if len(splitter.other):
            non_ring_packages = []
            for request in splitter.other:
                non_ring_packages.append(
                    request.find('./action/target').get('package'))
            print 'Not in a ring:', ' '.join(sorted(non_ring_packages))

        # Print requests not handled by staging process to highlight them.
        for request_type in ('change_devel', 'set_bugowner'):
            splitter.reset()
            splitter.filter_add('./action[@type="{}"]'.format(request_type))
            requests = splitter.filter_only()
            if len(requests):
                print('\n{} request(s)'.format(request_type))
                for request in sorted(requests, key=lambda s: s.get('id')):
                    print('  {} {}'.format(
                        self.api.makeurl(
                            ['request', 'show',
                             request.get('id')]),
                        request.find('./action/target').get('package')))