Merge branch 'master' of github.com:openSUSE/osc-plugin-factory

This commit is contained in:
Tomáš Chvátal 2014-03-06 16:32:50 +01:00
commit eaa56d06e3
3 changed files with 21 additions and 6 deletions

View File

@ -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:

View File

@ -27,7 +27,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:
@ -47,8 +47,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:

View File

@ -157,10 +157,11 @@ class OBS(object):
if len(path) == 0:
path = uri
if len(path) > 1:
# XXX Warning. This ret is not returned
ret = self._pretty_callback(request, 'https://localhost' + posixpath.dirname(path), headers, False)
if ret:
return ret
if exception:
raise BaseException("No tests/obs.pyresponse for {} on {} provided".format(request.method, uri))
raise BaseException("No response for {} on {} provided".format(request.method, uri))
else:
return None