qa/createWeeklyReport.py | 160 ++++++++++++++++++++++++++++++----------------- 1 file changed, 104 insertions(+), 56 deletions(-)
New commits: commit ab8875998497909f4e52e8404a380671eac527cf Author: Xisco Fauli <xiscofa...@libreoffice.org> AuthorDate: Fri Aug 31 02:47:44 2018 +0200 Commit: Xisco Fauli <xiscofa...@libreoffice.org> CommitDate: Fri Aug 31 02:47:44 2018 +0200 QA: Also show which was the previous status diff --git a/qa/createWeeklyReport.py b/qa/createWeeklyReport.py index 9738ca4..f09dc19 100755 --- a/qa/createWeeklyReport.py +++ b/qa/createWeeklyReport.py @@ -19,8 +19,8 @@ def util_create_statList_weeklyReport(): 'unconfirmed': [], 'newUsers': {}, 'comments_count': {}, - 'status_changed': {s: {'id':[], 'author': [] } for s in common.statutes_list}, - 'keyword_added': {k: {'id':[], 'author': [], 'status': {s:0 for s in common.statutes_list}} for k in common.keywords_list}, + 'status_changed': {}, + 'keyword_added': {k: {'id':[], 'author': []} for k in common.keywords_list}, 'keyword_removed': {k: {'id':[], 'author': []} for k in common.keywords_list}, 'whiteboard_added': {}, 'whiteboard_removed': {}, @@ -53,10 +53,6 @@ def analyze_bugzilla_weeklyReport(statList, bugzillaData, cfg): statNewDate = creationDate rowStatus = row['status'] - rowResolution = row['resolution'] - - if rowStatus == 'VERIFIED' or rowStatus == 'RESOLVED': - rowStatus += "_" + rowResolution if rowStatus == 'UNCONFIRMED': statList['unconfirmed'].append(rowId) @@ -80,8 +76,11 @@ def analyze_bugzilla_weeklyReport(statList, bugzillaData, cfg): actionDate = datetime.datetime.strptime(action['when'], "%Y-%m-%dT%H:%M:%SZ") common.util_check_bugzilla_mail(statList, actionMail, '', actionDate, rowId) - # Use this variable in case the status is set before the resolution + # Use these variables in case the status is set before the resolution or viceversa newStatus = None + newResolution = None + oldStatus = None + oldResolution = None for change in action['changes']: if change['field_name'] == 'blocks': if change['added']: @@ -108,28 +107,57 @@ def analyze_bugzilla_weeklyReport(statList, bugzillaData, cfg): addedStatus = change['added'] removedStatus = change['removed'] + if removedStatus == 'RESOLVED' or removedStatus == 'VERIFIED': + if oldResolution: + removedStatus = removedStatus + "_" + removedResolution + oldResolution = None + else: + oldStatus = removedStatus + if addedStatus == 'RESOLVED' or addedStatus == 'VERIFIED': - if rowResolution: - addedStatus = addedStatus + "_" + rowResolution + if newResolution: + addedStatus = addedStatus + "_" + newResolution if actionDate >= cfg['reportPeriod']: - statList['status_changed'][addedStatus]['id'].append(rowId) - statList['status_changed'][addedStatus]['author'].append(actionMail) + keyValue = removedStatus + '-' + addedStatus + if keyValue not in statList['status_changed']: + statList['status_changed'][keyValue] = {'id':[], 'author':[]} + statList['status_changed'][keyValue]['id'].append(rowId) + statList['status_changed'][keyValue]['author'].append(actionMail) + + newResolution = None else: newStatus = addedStatus else: if actionDate >= cfg['reportPeriod']: - statList['status_changed'][addedStatus]['id'].append(rowId) - statList['status_changed'][addedStatus]['author'].append(actionMail) + keyValue = removedStatus + '-' + addedStatus + if keyValue not in statList['status_changed']: + statList['status_changed'][keyValue] = {'id':[], 'author':[]} + statList['status_changed'][keyValue]['id'].append(rowId) + statList['status_changed'][keyValue]['author'].append(actionMail) elif change['field_name'] == 'resolution': + addedResolution = change['added'] + removedResolution = change['removed'] + + if oldStatus: + removedStatus = oldStatus + "_" + removedResolution + oldStatus = None + else: + oldResolution = removedResolution + if newStatus: - addedStatus = newStatus + "_" + change['added'] + addedStatus = newStatus + "_" + addedResolution if actionDate >= cfg['reportPeriod']: - statList['status_changed'][addedStatus]['id'].append(rowId) - statList['status_changed'][addedStatus]['author'].append(actionMail) + keyValue = removedStatus + '-' + addedStatus + if keyValue not in statList['status_changed']: + statList['status_changed'][keyValue] = {'id':[], 'author':[]} + statList['status_changed'][keyValue]['id'].append(rowId) + statList['status_changed'][keyValue]['author'].append(actionMail) newStatus = None + else: + newResolution = addedResolution elif change['field_name'] == 'priority': newPriority = change['added'] @@ -152,7 +180,6 @@ def analyze_bugzilla_weeklyReport(statList, bugzillaData, cfg): if actionDate >= cfg['reportPeriod'] and keyword in rowKeywords: statList['keyword_added'][keyword]['id'].append(rowId) statList['keyword_added'][keyword]['author'].append(actionMail) - statList['keyword_added'][keyword]['status'][rowStatus] += 1 keywordsRemoved = change['removed'].split(", ") for keyword in keywordsRemoved: @@ -247,6 +274,9 @@ def util_print_QA_line_weekly(fp, statList, dValue, action, isMetabug=False): if action == 'removed': aux3 = 'from' print((' * \'{}\' has been {} {} {} {}.').format(key, action, aux3, nBugs, aux2), file=fp) + elif action == 'changedStatus': + statuses = key.replace('_', ' ').split('-') + print((' * {} {} been changed from \'{}\' to \'{}\'.').format(nBugs, aux1, statuses[0], statuses[1]), file=fp) else: print((' * {} {} been changed to \'{}\'.').format(nBugs, aux1, key.replace('_', ' ')), file=fp) @@ -331,7 +361,7 @@ def create_weekly_Report(statList) : if statList['status_changed']: print("== STATUSES CHANGED ==", file=fp) - util_print_QA_line_weekly(fp, statList, statList['status_changed'], 'changed') + util_print_QA_line_weekly(fp, statList, statList['status_changed'], 'changedStatus') if statList['keyword_added']: print("== KEYWORDS ADDED ==", file=fp) commit 6a4a89a15a23c49d40f6b6caedcfe69af970e7d0 Author: Xisco Fauli <xiscofa...@libreoffice.org> AuthorDate: Fri Aug 31 01:27:28 2018 +0200 Commit: Xisco Fauli <xiscofa...@libreoffice.org> CommitDate: Fri Aug 31 01:27:28 2018 +0200 QA: show all changes in the weekly report, not just the last one Remove some unused code as well diff --git a/qa/createWeeklyReport.py b/qa/createWeeklyReport.py index 5c834b2..9738ca4 100755 --- a/qa/createWeeklyReport.py +++ b/qa/createWeeklyReport.py @@ -108,20 +108,16 @@ def analyze_bugzilla_weeklyReport(statList, bugzillaData, cfg): addedStatus = change['added'] removedStatus = change['removed'] - if rowStatus == 'ASSIGNED' and addedStatus == 'ASSIGNED': - lastAssignedEmail = actionMail - if addedStatus == 'RESOLVED' or addedStatus == 'VERIFIED': - if(rowResolution): + if rowResolution: addedStatus = addedStatus + "_" + rowResolution - if actionDate >= cfg['reportPeriod'] and rowStatus == addedStatus: + if actionDate >= cfg['reportPeriod']: statList['status_changed'][addedStatus]['id'].append(rowId) statList['status_changed'][addedStatus]['author'].append(actionMail) else: newStatus = addedStatus else: - - if actionDate >= cfg['reportPeriod'] and rowStatus == addedStatus: + if actionDate >= cfg['reportPeriod']: statList['status_changed'][addedStatus]['id'].append(rowId) statList['status_changed'][addedStatus]['author'].append(actionMail) @@ -129,7 +125,7 @@ def analyze_bugzilla_weeklyReport(statList, bugzillaData, cfg): if newStatus: addedStatus = newStatus + "_" + change['added'] - if actionDate >= cfg['reportPeriod'] and rowStatus == addedStatus: + if actionDate >= cfg['reportPeriod']: statList['status_changed'][addedStatus]['id'].append(rowId) statList['status_changed'][addedStatus]['author'].append(actionMail) @@ -195,21 +191,6 @@ def analyze_bugzilla_weeklyReport(statList, bugzillaData, cfg): statList['system_changed'][newSystem]['id'].append(rowId) statList['system_changed'][newSystem]['author'].append(actionMail) - elif change['field_name'] == 'assigned_to': - if actionDate >= cfg['reportPeriod']: - removedAssignee = change['removed'] - addedAssignee = change['added'] - if removedAssignee == "libreoffice-b...@lists.freedesktop.org" and \ - row['assigned_to'] != 'libreoffice-b...@lists.freedesktop.org' and \ - ( rowStatus == 'NEW' or rowStatus == 'UNCONFIRMED'): - addAssigned = True - addAssignedMail = actionMail - if addedAssignee == "libreoffice-b...@lists.freedesktop.org" and \ - row['assigned_to'] == 'libreoffice-b...@lists.freedesktop.org' and \ - rowStatus == 'ASSIGNED': - removeAssigned = True - removeAssignedMail = actionMail - commentMail = None comments = row['comments'][1:] for idx, comment in enumerate(comments): commit c2005e008bbdf4c904b641897aec12be1dc0ee53 Author: Xisco Fauli <xiscofa...@libreoffice.org> AuthorDate: Thu Aug 30 17:46:15 2018 +0200 Commit: Xisco Fauli <xiscofa...@libreoffice.org> CommitDate: Thu Aug 30 17:46:15 2018 +0200 QA: Fix format of done by sections diff --git a/qa/createWeeklyReport.py b/qa/createWeeklyReport.py index 5bfac81..5c834b2 100755 --- a/qa/createWeeklyReport.py +++ b/qa/createWeeklyReport.py @@ -276,15 +276,23 @@ def util_print_QA_line_weekly(fp, statList, dValue, action, isMetabug=False): d_view = [(v, k) for k, v in my_dict.items()] d_view.sort(reverse=True) - usersString = '\t\t+ Done by: ' + print('\t\t+ Done by:', file=fp) + text = " " for i1,i2 in d_view: try: - usersString += statList['people'][i2]['name'] + ' ( ' + str(i1) + ' ), ' + personString = statList['people'][i2]['name'] + ' (' + str(i1) + ')' + # Reduce lines to 72 characters, for some reason the emails are cut otherwise + if len( text + " " + personString ) < 72: + text += personString + ", " + else: + print(text[:-2], file=fp) + text = " " except: continue + if text is not " ": + print(text[:-2], file=fp) - print(usersString[:-2], file=fp) print(file=fp) def create_weekly_Report(statList) : @@ -316,7 +324,7 @@ def create_weekly_Report(statList) : try: if it >= 15: break - print('\t\t+ ' + statList['people'][i2]['name'] + ' ( ' + str(i1) + ' )', file=fp) + print('\t\t+ ' + statList['people'][i2]['name'] + ' (' + str(i1) + ')', file=fp) it += 1 except: continue commit 24b1ab020b153cd799e3897afeb5b6fbcf61d86e Author: Xisco Fauli <xiscofa...@libreoffice.org> AuthorDate: Thu Aug 30 15:18:32 2018 +0200 Commit: Xisco Fauli <xiscofa...@libreoffice.org> CommitDate: Thu Aug 30 15:29:55 2018 +0200 QA: Add top 15 reporters to the weekly report diff --git a/qa/createWeeklyReport.py b/qa/createWeeklyReport.py index cfd6965..5bfac81 100755 --- a/qa/createWeeklyReport.py +++ b/qa/createWeeklyReport.py @@ -14,7 +14,7 @@ reportPeriodDays = 7 def util_create_statList_weeklyReport(): return { - 'created': [], + 'created': {'id': [], 'author': []}, 'still_unconfirmed': [], 'unconfirmed': [], 'newUsers': {}, @@ -61,19 +61,20 @@ def analyze_bugzilla_weeklyReport(statList, bugzillaData, cfg): if rowStatus == 'UNCONFIRMED': statList['unconfirmed'].append(rowId) + creatorMail = row['creator'] + + common.util_check_bugzilla_mail(statList, creatorMail, row['creator_detail']['real_name'], creationDate, rowId) + if creationDate >= cfg['reportPeriod']: - statList['created'].append(rowId) + statList['created']['id'].append(rowId) + statList['created']['author'].append(creatorMail) if rowStatus == 'UNCONFIRMED': statList['still_unconfirmed'].append(rowId) rowKeywords = row['keywords'] - creatorMail = row['creator'] - crashSignature = row['cf_crashreport'] - common.util_check_bugzilla_mail(statList, creatorMail, row['creator_detail']['real_name'], creationDate, rowId) - for action in row['history']: actionMail = action['who'] actionDate = datetime.datetime.strptime(action['when'], "%Y-%m-%dT%H:%M:%SZ") @@ -295,20 +296,48 @@ def create_weekly_Report(statList) : print('What have happened in QA in the last {} days?'.format(reportPeriodDays), file=fp) print(file=fp) - print(' * {} bugs have been created, of which, {} are still unconfirmed ( Total Unconfirmed bugs: {} )'.format(\ - len(statList['created']), - len(statList['still_unconfirmed']), - len(statList['unconfirmed'])), file=fp) + #Count the number of reps + my_dict = {i: statList['created']['author'].count(i) for i in statList['created']['author']} - common.util_create_short_url(fp, statList['created'], 'Created bugs') - common.util_create_short_url(fp, statList['still_unconfirmed'], 'Still unconfirmed bugs') + d_view = [(v, k) for k, v in my_dict.items()] + print(' * {} bugs have been reported by {} people.'.format(\ + len(statList['created']['id']), + len(d_view)), file=fp) + + common.util_create_short_url(fp, statList['created']['id']) print(file=fp) - print(' * {} comments have been written by {} users.'.format( + + d_view.sort(reverse=True) + print(' * Top 15 reporters:', file=fp) + + it = 0 + for i1,i2 in d_view: + try: + if it >= 15: + break + print('\t\t+ ' + statList['people'][i2]['name'] + ' ( ' + str(i1) + ' )', file=fp) + it += 1 + except: + continue + + print(file=fp) + + print(" * {} bugs reported haven't been triaged yet.".format(\ + len(statList['still_unconfirmed'])), file=fp) + + common.util_create_short_url(fp, statList['still_unconfirmed']) + print(file=fp) + + print(" * Total number of unconfirmed bugs: {}".format(\ + len(statList['unconfirmed'])), file=fp) + print(file=fp) + + print(' * {} comments have been written by {} people.'.format( sum(statList['comments_count'].values()), len(statList['comments_count'])), file=fp) print(file=fp) - print(' * {} new users have signed up to Bugzilla.'.format(len(statList['newUsers'])), file=fp) + print(' * {} new people have signed up to Bugzilla.'.format(len(statList['newUsers'])), file=fp) print(file=fp) if statList['status_changed']: _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits