From da70085a3490f458164da826c5431294cccaf08f Mon Sep 17 00:00:00 2001 From: Michal Hrusecky Date: Thu, 6 Mar 2014 15:24:34 +0100 Subject: [PATCH 1/4] Small obs class cleanup --- tests/obs.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/obs.py b/tests/obs.py index da2b2c05..787488b7 100644 --- a/tests/obs.py +++ b/tests/obs.py @@ -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 From 9ecf0034342b02fe50c809b8ae031a62a5a316af Mon Sep 17 00:00:00 2001 From: Alberto Planas Date: Thu, 6 Mar 2014 15:22:04 +0100 Subject: [PATCH 2/4] Add some doc strings. --- osclib/request_finder.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/osclib/request_finder.py b/osclib/request_finder.py index f653e9cd..25c6c51f 100644 --- a/osclib/request_finder.py +++ b/osclib/request_finder.py @@ -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): From 8bc2a216d5c0a918c5c336b16b42c30160401c33 Mon Sep 17 00:00:00 2001 From: Alberto Planas Date: Thu, 6 Mar 2014 15:58:40 +0100 Subject: [PATCH 3/4] Small cosmetic changes. --- osclib/request_finder.py | 2 +- osclib/select_command.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/osclib/request_finder.py b/osclib/request_finder.py index 25c6c51f..dfb8597e 100644 --- a/osclib/request_finder.py +++ b/osclib/request_finder.py @@ -103,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: diff --git a/osclib/select_command.py b/osclib/select_command.py index 24c51bb0..2d030100 100644 --- a/osclib/select_command.py +++ b/osclib/select_command.py @@ -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: From 830c1abad804ba506e5eb81bb0ffc84bb890af77 Mon Sep 17 00:00:00 2001 From: Alberto Planas Date: Thu, 6 Mar 2014 15:59:34 +0100 Subject: [PATCH 4/4] Detect when the move is from the same project. --- osclib/select_command.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/osclib/select_command.py b/osclib/select_command.py index 2d030100..0bcb638e 100644 --- a/osclib/select_command.py +++ b/osclib/select_command.py @@ -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: