From 10297330e6e305b0f5c5476db032b3f5c6ef3c26 Mon Sep 17 00:00:00 2001 From: Peter Oliver Date: Fri, 22 Jun 2018 17:10:04 +0100 Subject: [PATCH] New package review report: reviewed needsponsor tickets The existing needsponsor report excludes reviewed tickets. This makes sense when it is a sponsor performing the review, but when the review is performed by a non-sponsor it can cause a review to drop off the radar. Add a new report to cover this case. --- roles/review-stats/build/files/review-stats.py | 66 +++++++++++++++++++++- .../review-stats/build/files/templates/index.html | 4 +- 2 files changed, 66 insertions(+), 4 deletions(-) diff --git a/roles/review-stats/build/files/review-stats.py b/roles/review-stats/build/files/review-stats.py index 691fdf30f..5436712d4 100755 --- a/roles/review-stats/build/files/review-stats.py +++ b/roles/review-stats/build/files/review-stats.py @@ -269,8 +269,7 @@ def run_query(bz): # Now process the other three flags; not much special processing for them querydata['o1'] = 'equals' -# for i in ['-', '+', '?']: - for i in ['-', '?']: + for i in ['-', '+', '?']: querydata['v1'] = 'fedora-review' + i dbprint("Looking up tickets with flag {0}.".format(i)) @@ -281,7 +280,7 @@ def run_query(bz): for bug in b1: bugdata[bug.id] = {} bugdata[bug.id]['hidden'] = [] - bugdata[bug.id]['blocks'] = [] + bugdata[bug.id]['blocks'] = bug.blocks bugdata[bug.id]['depends'] = [] bugdata[bug.id]['reviewflag'] = i bugs += b1 @@ -354,6 +353,21 @@ def select_needsponsor(bug, bugd): return 0 +def select_needsponsor_reviewed(bug, bugd): + wb = string.lower(bug.whiteboard) + if (bugd['reviewflag'] == '+' + and 'needinfo' not in bugd['hidden'] + and NEEDSPONSOR in bugd['blocks'] + and LEGAL not in bugd['blocks'] + and bug.bug_status != 'CLOSED' + and wb.find('buildfails') < 0 + and wb.find('notready') < 0 + and wb.find('stalledsubmitter') < 0 + and wb.find('awaitingsubmitter') < 0): + return 1 + return 0 + + def select_review(bug, bugd): if bugd['reviewflag'] == '?': return 1 @@ -559,6 +573,51 @@ def report_needsponsor(bugs, bugdata, loader, usermap, tmpdir, subs): return data['count'] +def report_needsponsor_reviewed(bugs, bugdata, loader, usermap, tmpdir, subs): + data = deepcopy(subs) + data['description'] = 'This page lists all NEEDSPONSOR tickets that have been successfully reviewed by a non-sponsor and require only sponsorship to proceed.' + data['title'] = 'Reviewed NEEDSPONSOR tickets' + curreporter = '' + curcount = 0 + oldest = {} + selected = [] + + for i in bugs: + if select_needsponsor_reviewed(i, bugdata[i.id]): + selected.append(i) + + # Determine the oldest reported bug + for i in selected: + if i.reporter not in oldest: + oldest[i.reporter] = i.creation_time + elif i.creation_time < oldest[i.reporter]: + oldest[i.reporter] = i.creation_time + + selected.sort(key=reporter) + selected.sort(key=lambda a: oldest[a.reporter]) + + for i in selected: + rowclass = rowclass_plain(data['count']) + r = i.reporter + + if curreporter != r: + if (r in usermap and len(usermap[r])): + name = usermap[r] + else: + name = r + data['packagers'].append({'email': r, 'name': name, 'oldest': human_date(oldest[r]), 'bugs': []}) + curreporter = r + curcount = 0 + + data['packagers'][-1]['bugs'].append(std_row(i, rowclass)) + data['count'] += 1 + curcount += 1 + + write_html(loader, 'needsponsor.html', data, tmpdir, 'NEEDSPONSOR-REVIEWED.html') + + return data['count'] + + def report_epel(bugs, bugdata, loader, tmpdir, subs): data = deepcopy(subs) data['description'] = ('This page lists new, reviewable EPEL package review tickets.' @@ -654,6 +713,7 @@ if __name__ == '__main__': subs['epel'] = report_epel(**args) subs['hidden'] = report_hidden(**args) subs['needsponsor'] = report_needsponsor(usermap=usermap, **args) + subs['needsponsor_reviewed'] = report_needsponsor_reviewed(usermap=usermap, **args) subs['review'] = report_review(**args) subs['trivial'] = report_trivial(**args) # data['accepted_closed'] = report_accepted_closed(bugs, bugdata, loader, tmpdir) diff --git a/roles/review-stats/build/files/templates/index.html b/roles/review-stats/build/files/templates/index.html index 66c240cdf..20ee064b9 100644 --- a/roles/review-stats/build/files/templates/index.html +++ b/roles/review-stats/build/files/templates/index.html @@ -42,7 +42,9 @@ available: New EPEL tickets ($epel) All EPEL review tickets without an assigned reviewer, sorted by submission date. Tickets colored green require a sponsor. Needsponsor tickets ($needsponsor) - All review tickets where a sponsor is required, sorted by reporter. Please see this page for more information on sponsorship. + Unreviewed tickets where a sponsor is required, sorted by reporter. Please see this page for more information on sponsorship. +Reviewed needsponsor tickets ($needsponsor_reviewed) + Reviewed tickets where a sponsor is still required, sorted by reporter. Hidden tickets ($hidden) Tickets which have been hidden for some reason. These tickets either depend on other review tickets which have not yet been closed, or are unreviewable for some reason. See this page for more information on the various states a review ticket can have. Tickets under review ($review) -- 2.14.4