Merge pull request #94 from aplanas/master
Detect staging project only when review by_project is in new state
This commit is contained in:
commit
dcffab8bf2
@ -32,6 +32,18 @@ class RequestFinder:
|
|||||||
self.stagingapi = stagingapi
|
self.stagingapi = stagingapi
|
||||||
self.srs = {}
|
self.srs = {}
|
||||||
|
|
||||||
|
def _filter_review_by_project(self, element, state):
|
||||||
|
reviews = [r.get('by_project')
|
||||||
|
for r in element.findall('review')
|
||||||
|
if r.get('by_project') and r.get('state') == state]
|
||||||
|
return reviews
|
||||||
|
|
||||||
|
def _new_review_by_project(self, request, element):
|
||||||
|
reviews = self._filter_review_by_project(element, 'new')
|
||||||
|
assert len(reviews) <= 1, 'Request "{}" have more than one review by project "{}"'.format(request,
|
||||||
|
reviews)
|
||||||
|
return reviews[0] if reviews else None
|
||||||
|
|
||||||
def find_request_id(self, request):
|
def find_request_id(self, request):
|
||||||
"""
|
"""
|
||||||
Look up the request by ID to verify if it is correct
|
Look up the request by ID to verify if it is correct
|
||||||
@ -57,10 +69,9 @@ class RequestFinder:
|
|||||||
raise oscerr.WrongArgs(msg)
|
raise oscerr.WrongArgs(msg)
|
||||||
self.srs[int(request)] = {'project': project}
|
self.srs[int(request)] = {'project': project}
|
||||||
|
|
||||||
for review in root.findall('review'):
|
review = self._new_review_by_project(request, root)
|
||||||
if review.get('by_project'):
|
if review:
|
||||||
self.srs[int(request)]['staging'] = review.get('by_project')
|
self.srs[int(request)]['staging'] = review
|
||||||
break
|
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@ -83,10 +94,11 @@ class RequestFinder:
|
|||||||
# TODO: check the package matches - OBS is case insensitive
|
# TODO: check the package matches - OBS is case insensitive
|
||||||
request = int(sr.get('id'))
|
request = int(sr.get('id'))
|
||||||
self.srs[request] = {'project': 'openSUSE:Factory'}
|
self.srs[request] = {'project': 'openSUSE:Factory'}
|
||||||
for review in sr.findall('review'):
|
|
||||||
if review.get('by_project'):
|
review = self._new_review_by_project(request, sr)
|
||||||
self.srs[request]['staging'] = review.get('by_project')
|
if review:
|
||||||
break
|
self.srs[int(request)]['staging'] = review
|
||||||
|
|
||||||
if ret:
|
if ret:
|
||||||
msg = 'There are multiple requests for package "{}": {}'
|
msg = 'There are multiple requests for package "{}": {}'
|
||||||
msg = msg.format(package, ', '.join(map(str, self.srs.keys())))
|
msg = msg.format(package, ', '.join(map(str, self.srs.keys())))
|
||||||
@ -114,10 +126,9 @@ class RequestFinder:
|
|||||||
if src is not None and src.get('project') == source_project:
|
if src is not None and src.get('project') == source_project:
|
||||||
request = int(sr.attrib['id'])
|
request = int(sr.attrib['id'])
|
||||||
self.srs[request] = {'project': 'openSUSE:Factory'}
|
self.srs[request] = {'project': 'openSUSE:Factory'}
|
||||||
for review in sr.findall('review'):
|
review = self._new_review_by_project(request, sr)
|
||||||
if review.get('by_project'):
|
if review:
|
||||||
self.srs[request]['staging'] = review.get('by_project')
|
self.srs[int(request)]['staging'] = review
|
||||||
break
|
|
||||||
ret = True
|
ret = True
|
||||||
|
|
||||||
return ret
|
return ret
|
||||||
|
@ -44,4 +44,3 @@ class SelectCommand(object):
|
|||||||
# now make sure we enable the prj
|
# now make sure we enable the prj
|
||||||
self.api.build_switch_prj(tprj, 'enable')
|
self.api.build_switch_prj(tprj, 'enable')
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user