protect against missing labels on reviews

Do not fail if gerrit does not report any Workflow or Code-Review
data.

Change-Id: I1e7fdc901db70766c3febb55263c1dac62c31676
Signed-off-by: Doug Hellmann <doug@doughellmann.com>
This commit is contained in:
Doug Hellmann 2018-04-30 13:17:35 -04:00
parent e392142765
commit 161b6e9be6

View File

@ -121,28 +121,33 @@ class Review:
@property
def reviewers(self):
for label in self._data['labels']['Code-Review']['all']:
if label['value'] not in (2, -1):
# Only report reviewers with negative reviews or
# approvals to avoid counting anyone who is just
# leaving lots of +1 votes without actually providing
# feedback.
continue
yield Participant(
'reviewer',
label['name'],
label['email'],
_to_datetime(label['date']),
)
for label in self._data['labels']['Workflow']['all']:
if label.get('value', 0) != 1:
continue
yield Participant(
'approver',
label['name'],
label['email'],
_to_datetime(label['date']),
)
labels = self._data['labels']
if 'Code-Review' in labels:
for label in labels['Code-Review']['all']:
if label['value'] not in (2, -1):
# Only report reviewers with negative reviews or
# approvals to avoid counting anyone who is just
# leaving lots of +1 votes without actually providing
# feedback.
continue
yield Participant(
'reviewer',
label['name'],
label['email'],
_to_datetime(label['date']),
)
if 'Workflow' in labels:
for label in labels['Workflow']['all']:
if label.get('value', 0) != 1:
continue
yield Participant(
'approver',
label['name'],
label['email'],
_to_datetime(label['date']),
)
def cache_review(review_id, data, cache):