Merge pull request #104 from aplanas/master
Detect when the move is from the same project.
This commit is contained in:
commit
5a2d44e8dd
@ -33,15 +33,23 @@ class RequestFinder:
|
||||
self.srs = {}
|
||||
|
||||
def _filter_review_by_project(self, element, state):
|
||||
"""
|
||||
Takes a XML that contains a list of reviews and take the ones
|
||||
that in state '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):
|
||||
"""
|
||||
Takes a XML that contains a list of reviews and return True if
|
||||
'request' is in the list with state as 'new'.
|
||||
"""
|
||||
reviews = self._filter_review_by_project(element, 'new')
|
||||
assert len(reviews) <= 1, 'Request "{}" have more than one review by project "{}"'.format(request,
|
||||
reviews)
|
||||
assert len(reviews) <= 1, 'Request "{}" have multiple review by project in new state "{}"'.format(request,
|
||||
reviews)
|
||||
return reviews[0] if reviews else None
|
||||
|
||||
def find_request_id(self, request):
|
||||
@ -95,7 +103,7 @@ class RequestFinder:
|
||||
request = int(sr.get('id'))
|
||||
state = sr.find('state').get('name')
|
||||
|
||||
self.srs[request] = {'project': 'openSUSE:Factory', 'state': state }
|
||||
self.srs[request] = {'project': 'openSUSE:Factory', 'state': state}
|
||||
|
||||
review = self._new_review_by_project(request, sr)
|
||||
if review:
|
||||
|
@ -26,7 +26,7 @@ class SelectCommand(object):
|
||||
package = self._package(request)
|
||||
|
||||
for staging in self.api.get_staging_projects():
|
||||
if staging == self.tprj: # requests for the same project are fine
|
||||
if staging == self.tprj: # requests for the same project are fine
|
||||
continue
|
||||
for rq in self.api.get_prj_pseudometa(staging)['requests']:
|
||||
if rq['id'] != request and rq['package'] == package:
|
||||
@ -46,8 +46,14 @@ class SelectCommand(object):
|
||||
else:
|
||||
# supersede = (new_rq, package, project)
|
||||
fprj = rq_prj['staging'] if not supersede else supersede[2]
|
||||
|
||||
if supersede:
|
||||
print('"{} ({}) is superseded by {}'.format(rq, supersede[1], supersede[0]))
|
||||
|
||||
if fprj == self.tprj:
|
||||
print('"{}" is currently in "{}"'.format(rq, self.tprj))
|
||||
return False
|
||||
|
||||
print('Moving "{}" from "{}" to "{}"'.format(rq, fprj, self.tprj))
|
||||
return self.api.move_between_project(fprj, rq, self.tprj)
|
||||
elif 'staging' in rq_prj and not move:
|
||||
|
Loading…
x
Reference in New Issue
Block a user