From ca5f71ec4bd5a1aacbeb30f6598a6b077ffd3fca Mon Sep 17 00:00:00 2001 From: Ludwig Nussel Date: Thu, 8 Mar 2018 16:44:23 +0100 Subject: [PATCH] leaper: fix can_accept_review for combined user/group usage --- ReviewBot.py | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/ReviewBot.py b/ReviewBot.py index b8e59ddc..cacc4a51 100644 --- a/ReviewBot.py +++ b/ReviewBot.py @@ -403,27 +403,26 @@ class ReviewBot(object): return (None, None) + def _has_open_review_by(self, root, by_what, reviewer): + states = set([review.get('state') for review in root.findall('review') if review.get(by_what) == reviewer]) + if not states: + return None + elif 'new' in states: + return True + return False + def can_accept_review(self, request_id): """return True if there is a new review for the specified reviewer""" states = set() url = osc.core.makeurl(self.apiurl, ('request', str(request_id))) try: root = ET.parse(osc.core.http_GET(url)).getroot() - if self.review_user: - by_what = 'by_user' - reviewer = self.review_user - elif self.review_group: - by_what = 'by_group' - reviewer = self.review_group - else: - return False - states = set([review.get('state') for review in root.findall('review') if review.get(by_what) == reviewer]) + if self.review_user and self._has_open_review_by(root, 'by_user', self.review_user): + return True + if self.review_group and self._has_open_review_by(root, 'by_group', self.review_group): + return True except urllib2.HTTPError as e: print('ERROR in URL %s [%s]' % (url, e)) - if not states: - return None - elif 'new' in states: - return True return False def set_request_ids_search_review(self):