refactor vote testing for delegated reviews

Remove redundant logic for finding votes by a particular person.

Change-Id: Ie7fa93054fc1987cd54b8905c7c09f115d1aaf97
Signed-off-by: Doug Hellmann <doug@doughellmann.com>
This commit is contained in:
Doug Hellmann 2018-12-12 11:39:16 -05:00
parent 11d0914c69
commit 9190e309c3
1 changed files with 17 additions and 13 deletions

View File

@ -129,22 +129,26 @@ def format_votes(votes):
)
def get_votes_by_person(name, review):
for label in ['Code-Review', 'Rollcall-Vote']:
for vote in review['labels'].get(label, {}).get('all', []):
voter = vote.get('name', '')
if voter == name:
yield vote
def has_approved(name, review):
for vote in review['labels'].get('Code-Review', {}).get('all', []):
voter = vote.get('name', '')
value = vote.get('value', 0)
if voter == name and value == 1:
return True
return False
return any(
vote.get('value', 0) == 1
for vote in get_votes_by_person(name, review)
)
def has_rejected(name, review):
for vote in review['labels'].get('Code-Review', {}).get('all', []):
voter = vote.get('name', '')
value = vote.get('value', 0)
if voter == name and value == -1:
return True
return False
return any(
vote.get('value', 0) == -1
for vote in get_votes_by_person(name, review)
)
def all_changes():
@ -304,7 +308,7 @@ def get_one_status(change, delegates):
approver_name = delegates[topic]
can_approve = 'delegated to {}'.format(approver_name)
if has_approved(approver_name, change):
can_approve += ', YES'
can_approve += '\nYES'
elif has_rejected(approver_name, change):
can_approve += '\nNO - delegate voted against'