From 051882ca5828509f236f4abddbfec42f45d7d1fb Mon Sep 17 00:00:00 2001 From: Max Lin Date: Wed, 26 Aug 2015 17:42:40 +0800 Subject: [PATCH] ignore package if has a pending request against it --- manager_42.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/manager_42.py b/manager_42.py index 0d5646d7..78dd1a84 100755 --- a/manager_42.py +++ b/manager_42.py @@ -71,6 +71,8 @@ class UpdateCrawler(object): self.packages = dict() for project in self.projects + self.project_preference_order: self.packages[project] = self.get_source_packages(project) + self.pending_requests = [] + self.pending_requests = self.get_requests_list(self.from_prj) @memoize() def _cached_GET(self, url): @@ -111,6 +113,21 @@ class UpdateCrawler(object): return None return requestid.text + def get_requests_list(self, project): + """ Return package name of pending review requests """ + requests = [] + target = "action[target/@project='{}']".format(project) + query = "match=({})+and+({})".format("state/@name='new'+or+state/@name='review'", target) + url = makeurl(self.apiurl,['search', 'request'], query) + f = http_GET(url) + root = ET.parse(f).getroot() + for rq in root.findall('request'): + action = rq.findall('action') + action = action[0] # take the first one only + requests.append(action.find('target').get('package')) + + return requests + def get_request_infos(self, requestid): request = self.cached_GET(makeurl(self.apiurl, ['request', requestid])) root = ET.fromstring(request) @@ -172,6 +189,11 @@ class UpdateCrawler(object): def link_packages(self, packages, sourceprj, sourcepkg, sourcerev, targetprj, targetpkg): logging.info("update link %s/%s -> %s/%s@%s [%s]", targetprj, targetpkg, sourceprj, sourcepkg, sourcerev, ','.join(packages)) + # check do it have pending review request against this package + if targetpkg in self.pending_requests: + logging.info("There is a pending request to %s / %s, ignore!"%(self.from_prj, packages)) + return + # make sure 'packages' covers all subpackages subpackages, mainpackage = self.get_specfiles(self.from_prj, targetpkg) if subpackages: