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))
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')))
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')))