Merge pull request #345 from aplanas/master

`find_request_package` ignore declined requests.
This commit is contained in:
Stephan Kulow 2015-05-15 12:14:59 +02:00
commit d7f58f6780

View File

@ -65,14 +65,14 @@ class RequestFinder(object):
:param package: name of the package :param package: name of the package
""" """
query = 'states=new,review,declined&project={}&view=collection&package={}' query = 'states=new,review&project={}&view=collection&package={}'
query = query.format(self.api.project, urllib2.quote(package)) query = query.format(self.api.project, urllib2.quote(package))
url = makeurl(self.api.apiurl, ['request'], query) url = makeurl(self.api.apiurl, ['request'], query)
f = http_GET(url) f = http_GET(url)
root = ET.parse(f).getroot() root = ET.parse(f).getroot()
last_rq = None requests = []
for sr in root.findall('request'): for sr in root.findall('request'):
# Check the package matches - OBS is case insensitive # Check the package matches - OBS is case insensitive
rq_package = sr.find('action').find('target').get('package') rq_package = sr.find('action').find('target').get('package')
@ -83,23 +83,15 @@ class RequestFinder(object):
state = sr.find('state').get('name') state = sr.find('state').get('name')
self.srs[request] = {'project': self.api.project, 'state': state} self.srs[request] = {'project': self.api.project, 'state': state}
requests.append(request)
if last_rq: if len(requests) > 1:
if self.srs[last_rq]['state'] == 'declined': msg = 'There are multiple requests for package "{}": {}'
# ignore previous requests if they are declined msg = msg.format(package, ', '.join(requests))
# if they are the last one, it's fine to return them raise oscerr.WrongArgs(msg)
del self.srs[last_rq]
else:
msg = 'There are multiple requests for package "{}": {} and {}'
msg = msg.format(package, last_rq, request)
raise oscerr.WrongArgs(msg)
# Invariant of the loop: request is the max request ID searched so far request = requests[0] if requests else None
assert last_rq < request, 'Request ID do not increase monotonically' return request
last_rq = request
return last_rq
def find_request_project(self, source_project): def find_request_project(self, source_project):
""" """