esc-reporting/qa-tools.py | 183 ++++++++++++++++++++++++++++------------------ 1 file changed, 115 insertions(+), 68 deletions(-)
New commits: commit b8717de0c8e9d5c67879d8bc1b2b6cd60d345b19 Author: Xisco Fauli <[email protected]> Date: Mon Jan 22 12:22:50 2018 +0100 QA tools: Fix a couple of issues diff --git a/esc-reporting/qa-tools.py b/esc-reporting/qa-tools.py index fc6861c..af18df4 100755 --- a/esc-reporting/qa-tools.py +++ b/esc-reporting/qa-tools.py @@ -826,7 +826,7 @@ def analyze_bugzilla(statList, bugzillaData, cfg): tup = (rowId, reopener6MonthsEmail) lResults['reopened6Months'].append(tup) - if isReopened: + if isReopened and not autoConfirmed: if 'reopened' not in lResults: lResults['reopened'] = [] tup = (rowId, reopenerEmail) @@ -895,7 +895,7 @@ def analyze_bugzilla(statList, bugzillaData, cfg): if 'emptyAlias' not in lResults: lResults['emptyAlias'] = [] tup = (rowId, '') - lResults['emptyAlias'].append(rowId) + lResults['emptyAlias'].append(tup) for dKey, dValue in lResults.items(): commit fd7d41aefaceb1b5f48bf30a09fc8ff6040dc8eb Author: Xisco Fauli <[email protected]> Date: Wed Jan 17 18:42:37 2018 +0100 QA tools: Warn about reopened bugs neved fixed diff --git a/esc-reporting/qa-tools.py b/esc-reporting/qa-tools.py index 870b5f3..fc6861c 100755 --- a/esc-reporting/qa-tools.py +++ b/esc-reporting/qa-tools.py @@ -389,7 +389,7 @@ def analyze_bugzilla(statList, bugzillaData, cfg): actionMail = None - fixed = False + isFixed = False everConfirmed = False autoConfirmed = False autoConfirmMail = "" @@ -398,8 +398,8 @@ def analyze_bugzilla(statList, bugzillaData, cfg): oldestVersion = 999999 newerVersion = False newerVersionMail = "" - movedToFixed = False - movedToFixedMail = "" + autoFixed = False + autoFixedMail = "" addAssigned = False addAssignedMail = "" removeAssigned = False @@ -414,10 +414,13 @@ def analyze_bugzilla(statList, bugzillaData, cfg): lastAssignedEmail = "" patchAdded = False regressionAdded = False - isReopened = False + isReopened6Months = False closeDate = None - reopenerEmail = "" + reopener6MonthsEmail = "" isConfirmed = False + movedToFixed = False + isReopened = False + reopenerEmail = "" for action in row['history']: actionMail = action['who'] @@ -500,6 +503,9 @@ def analyze_bugzilla(statList, bugzillaData, cfg): if rowStatus == 'ASSIGNED' and addedStatus == 'ASSIGNED': lastAssignedEmail = actionMail + if addedStatus == 'REOPENED' and rowStatus == 'REOPENED' and not movedToFixed: + isReopened = True + reopenerEmail = actionMail if actionDate >= cfg['reportPeriod'] and not bResolved and isClosed(addedStatus) and isClosed(row['status']): bResolved = True @@ -527,13 +533,13 @@ def analyze_bugzilla(statList, bugzillaData, cfg): statList['weeklyReport']['status_changed'][addedStatus]['author'].append(actionMail) if actionDate >= cfg['reportPeriod'] and addedStatus == 'RESOLVED_FIXED': - if fixed: + if isFixed: statList['bugs']['fixed']['id'].pop() statList['bugs']['fixed']['author'].pop() statList['bugs']['fixed']['id'].append(rowId) statList['bugs']['fixed']['author'].append(actionMail) - fixed = True + isFixed = True #if any other user moves it to open ( ASSIGNED, NEW or REOPENED ), #the bug is no longer autoconfirmed @@ -551,14 +557,14 @@ def analyze_bugzilla(statList, bugzillaData, cfg): autoConfirmed = True autoConfirmedMail = actionMail - if movedToFixed and removedStatus == 'RESOLVED': - movedToFixed = False + if autoFixed and removedStatus == 'RESOLVED': + autoFixed = False if actionDate >= cfg['reportPeriod']: if actionMail == creatorMail and addedStatus == 'RESOLVED_FIXED' and \ rowStatus == 'RESOLVED_FIXED' and 'target:' not in row['whiteboard']: - movedToFixed = True - movedToFixedMail = actionMail + autoFixed = True + autoFixedMail = actionMail if removedStatus == "ASSIGNED" and addedStatus == "NEW" and \ rowStatus == "NEW" and row['assigned_to'] != '[email protected]': @@ -580,12 +586,15 @@ def analyze_bugzilla(statList, bugzillaData, cfg): newStatus = None - if change['added'] == 'FIXED' and isOpen(rowStatus): - closeDate = actionDate + if change['added'] == 'FIXED': + movedToFixed = True + isReopened = False + if isOpen(rowStatus): + closeDate = actionDate elif change['removed'] == 'FIXED' and closeDate and actionDate >= cfg['reportPeriod'] and \ (actionDate - closeDate).days > 180: - isReopened = True - reopenerEmail = actionMail + isReopened6Months = True + reopener6MonthsEmail = actionMail elif change['field_name'] == 'priority': newPriority = change['added'] @@ -693,7 +702,7 @@ def analyze_bugzilla(statList, bugzillaData, cfg): statList['weeklyReport']['comments_count'][commentMail] += 1 if isOpen(rowStatus) and reopened6MonthsComment in comment['text']: - isReopened = True + isReopened6Months = True #Check for duplicated comments if idx > 0 and comment['text'] == comments[idx-1]['text']: @@ -781,11 +790,11 @@ def analyze_bugzilla(statList, bugzillaData, cfg): tup = (rowId, '') lResults['regressionAdded'].append(tup) - if movedToFixed: - if 'movedToFixed' not in lResults: - lResults['movedToFixed'] = [] - tup = (rowId, movedToFixedMail) - lResults['movedToFixed'].append(tup) + if autoFixed: + if 'autoFixed' not in lResults: + lResults['autoFixed'] = [] + tup = (rowId, autoFixedMail) + lResults['autoFixed'].append(tup) if autoConfirmed: if 'autoConfirmed' not in lResults: @@ -811,12 +820,18 @@ def analyze_bugzilla(statList, bugzillaData, cfg): tup = (rowId, '') lResults['crashSignature'].append(tup) - if isReopened: + if isReopened6Months: if 'reopened6Months' not in lResults: lResults['reopened6Months'] = [] - tup = (rowId, reopenerEmail) + tup = (rowId, reopener6MonthsEmail) lResults['reopened6Months'].append(tup) + if isReopened: + if 'reopened' not in lResults: + lResults['reopened'] = [] + tup = (rowId, reopenerEmail) + lResults['reopened'].append(tup) + #In case the reporter assigned the bug to himself at creation time if addAssigned or (creationDate >= cfg['reportPeriod'] and row['assigned_to'] != '[email protected]' and \ (rowStatus == 'NEW' or rowStatus == 'UNCONFIRMED')): commit bd15f4a2631b78ff02b88dd3a5bf8798767ba376 Author: Xisco Fauli <[email protected]> Date: Wed Jan 17 17:02:03 2018 +0100 QA tools: better to show when it was last time modified diff --git a/esc-reporting/qa-tools.py b/esc-reporting/qa-tools.py index eba8ef5..870b5f3 100755 --- a/esc-reporting/qa-tools.py +++ b/esc-reporting/qa-tools.py @@ -764,7 +764,7 @@ def analyze_bugzilla(statList, bugzillaData, cfg): datetime.datetime.strptime(row['last_change_time'], "%Y-%m-%dT%H:%M:%SZ") < cfg['retestPeriod']: if 'Unconfirmed1Comment' not in lResults: lResults['Unconfirmed1Comment'] = [] - tup = (rowId, creatorMail) + tup = (rowId, row['last_change_time']) lResults['Unconfirmed1Comment'].append(tup) for person in row['cc_detail']: commit fea7e4135133ac6394b7562cedcdde83ff56bb12 Author: Xisco Fauli <[email protected]> Date: Wed Jan 17 14:30:09 2018 +0100 QA tools: Warn if regression keyword is added without anything else diff --git a/esc-reporting/qa-tools.py b/esc-reporting/qa-tools.py index 65161c7..eba8ef5 100755 --- a/esc-reporting/qa-tools.py +++ b/esc-reporting/qa-tools.py @@ -294,7 +294,7 @@ def analyze_bugzilla(statList, bugzillaData, cfg): statList['bugs']['all']['status'][rowStatus] += 1 - keywords = row['keywords'] + rowKeywords = row['keywords'] creatorMail = row['creator'] @@ -368,7 +368,7 @@ def analyze_bugzilla(statList, bugzillaData, cfg): if isOpen(rowStatus) and len(row['cc']) >= 10: statList['MostCCBugs'][rowId] = util_create_bug( - row['summary'], row['component'], row['version'], keywords, creationDate, len(row['cc'])) + row['summary'], row['component'], row['version'], rowKeywords, creationDate, len(row['cc'])) rowDupeOf = util_check_duplicated(rowId) if rowDupeOf: @@ -413,6 +413,7 @@ def analyze_bugzilla(statList, bugzillaData, cfg): bResolved = False lastAssignedEmail = "" patchAdded = False + regressionAdded = False isReopened = False closeDate = None reopenerEmail = "" @@ -545,7 +546,7 @@ def analyze_bugzilla(statList, bugzillaData, cfg): #from non-open status and never confirmed by someone else. #Ignore bisected bugs or some trusted authors defined in configQA.json if actionDate >= cfg['reportPeriod'] and not everConfirmed and actionMail == creatorMail and \ - isOpen(rowStatus) and isOpen(addedStatus) and 'bisected' not in keywords and \ + isOpen(rowStatus) and isOpen(addedStatus) and 'bisected' not in rowKeywords and \ creatorMail not in cfg['configQA']['ignore']['autoConfirmed']: autoConfirmed = True autoConfirmedMail = actionMail @@ -607,7 +608,7 @@ def analyze_bugzilla(statList, bugzillaData, cfg): if keyword in keywords_list: util_increase_user_actions(statList, key, actionMail, bugTargets, 'keyword_added', actionDate) - if actionDate >= cfg['reportPeriod'] and keyword in row['keywords']: + if actionDate >= cfg['reportPeriod'] and keyword in rowKeywords: statList['weeklyReport']['keyword_added'][keyword]['id'].append(rowId) statList['weeklyReport']['keyword_added'][keyword]['author'].append(actionMail) statList['weeklyReport']['keyword_added'][keyword]['status'][rowStatus] += 1 @@ -615,12 +616,15 @@ def analyze_bugzilla(statList, bugzillaData, cfg): if keyword == 'patch': patchAdded = True + if keyword == 'regression': + regressionAdded = True + keywordsRemoved = change['removed'].split(", ") for keyword in keywordsRemoved: if keyword in keywords_list: util_increase_user_actions(statList, key, actionMail, bugTargets, 'keyword_removed', actionDate) - if actionDate >= cfg['reportPeriod'] and keyword not in row['keywords']: + if actionDate >= cfg['reportPeriod'] and keyword not in rowKeywords: statList['weeklyReport']['keyword_removed'][keyword]['id'].append(rowId) statList['weeklyReport']['keyword_removed'][keyword]['author'].append(actionMail) @@ -738,7 +742,7 @@ def analyze_bugzilla(statList, bugzillaData, cfg): statList['tags']['removeObsolete'].add(comments[-1]["id"]) else: if datetime.datetime.strptime(row['last_change_time'], "%Y-%m-%dT%H:%M:%SZ") < cfg['untouchedPeriod'] and \ - rowStatus == 'NEW' and 'needsUXEval' not in row['keywords'] and 'easyHack' not in row['keywords'] and \ + rowStatus == 'NEW' and 'needsUXEval' not in rowKeywords and 'easyHack' not in rowKeywords and \ row['component'] != 'Documentation' and (row['product'] == 'LibreOffice' or \ row['product'] == 'Impress Remote') and row['severity'] != 'enhancement': statList['massping']['untouched'].append(rowId) @@ -768,6 +772,15 @@ def analyze_bugzilla(statList, bugzillaData, cfg): if commentMail == email or actionMail == email: util_check_bugzilla_mail(statList, email, person['real_name']) + if (isOpen(rowStatus) or rowStatus == 'UNCONFIRMED') and regressionAdded and \ + 'bibisectRequest' not in rowKeywords and 'bibisected' not in rowKeywords and \ + 'bisected' not in rowKeywords and 'preBibisect' not in rowKeywords and \ + 'bibisectNotNeeded' not in rowKeywords and 'notBibisectable' not in rowKeywords: + if 'regressionAdded' not in lResults: + lResults['regressionAdded'] = [] + tup = (rowId, '') + lResults['regressionAdded'].append(tup) + if movedToFixed: if 'movedToFixed' not in lResults: lResults['movedToFixed'] = [] commit 7bc7c5f27269cf7bd80907d2317fe067980f44b9 Author: Xisco Fauli <[email protected]> Date: Wed Jan 17 13:12:56 2018 +0100 QA tools: fix different issues with duplicate bugs diff --git a/esc-reporting/qa-tools.py b/esc-reporting/qa-tools.py index 43283d4..65161c7 100755 --- a/esc-reporting/qa-tools.py +++ b/esc-reporting/qa-tools.py @@ -254,6 +254,19 @@ def util_increase_user_actions(statList, bug, mail, targets, action, actionTime) statList['period'][period]['people'][mail][action] += 1 statList['period'][period]['people'][mail]['bugs'].append(bug) +def util_check_duplicated(bugID, isFirst=True): + rowDupeOf = bugzillaData['bugs'][str(bugID)]['dupe_of'] + if rowDupeOf: + if str(rowDupeOf) in bugzillaData['bugs']: + return util_check_duplicated(rowDupeOf, False) + else: + return bugID + else: + if isFirst: + return None + else: + return bugID + def analyze_bugzilla(statList, bugzillaData, cfg): print("Analyze bugzilla\n", end="", flush=True) statNewDate = statList['stat']['newest'] @@ -357,8 +370,7 @@ def analyze_bugzilla(statList, bugzillaData, cfg): statList['MostCCBugs'][rowId] = util_create_bug( row['summary'], row['component'], row['version'], keywords, creationDate, len(row['cc'])) - - rowDupeOf = row['dupe_of'] + rowDupeOf = util_check_duplicated(rowId) if rowDupeOf: if rowDupeOf not in statList['dupesBugs']: statList['dupesBugs'][rowDupeOf] = [] @@ -373,8 +385,7 @@ def analyze_bugzilla(statList, bugzillaData, cfg): bugzillaData['bugs'][str(rowDupeOf)]['version'], bugzillaData['bugs'][str(rowDupeOf)]['keywords'], datetime.datetime.strptime( - bugzillaData['bugs'][str(rowDupeOf)]['creation_time'], "%Y-%m-%dT%H:%M:%SZ"), - 1) + bugzillaData['bugs'][str(rowDupeOf)]['creation_time'], "%Y-%m-%dT%H:%M:%SZ"), 1) actionMail = None @@ -858,21 +869,6 @@ def analyze_bugzilla(statList, bugzillaData, cfg): tup = (rowId, '') lResults['emptyAlias'].append(rowId) - output = '' - for k, v in statList['dupesBugs'].items(): - if k in statList['MostDupeBugs']: - if len(v) >= 3: - statList['MostDupeBugs'][k]['count'] = len(v) - else: - del statList['MostDupeBugs'][k] - for dupeBug in v: - if dupeBug in statList['dupesBugs']: - output += '\n- Duplicates of ' + str(k) - for subDupeBug in statList['dupesBugs'][dupeBug]: - output += '\n * ' + urlShowBug + str(subDupeBug) - if output: - output = '=== DupeOfDupe ===' + output - print(output) for dKey, dValue in lResults.items(): if dValue: @@ -1003,6 +999,14 @@ def util_print_QA_line_created(fp, dValue ): print(' {}: {}'.format(k, v), file=fp) def create_wikimedia_table_mostCCBugs(cfg, statList): + + for k, v in statList['dupesBugs'].items(): + if k in statList['MostDupeBugs']: + if len(v) >= 3: + statList['MostDupeBugs'][k]['count'] = len(v) + else: + del statList['MostDupeBugs'][k] + for nameList in ['MostCCBugs', 'MostDupeBugs']: print('Creating wikimedia table for ' + nameList) output = "" @@ -1012,16 +1016,14 @@ def create_wikimedia_table_mostCCBugs(cfg, statList): output += '{{Menu.QA}}\n' output += '\n' table = [] + headers = ['Id', 'Summary', 'Component', 'Version', 'isRegression', 'isBisected', + 'isEasyHack', 'haveBackTrace', 'Reported'] if nameList == 'MostCCBugs': - headers = ['Id', 'Summary', 'Component', 'Version', 'isRegression', 'isBisected', - 'isEasyHack', 'haveBackTrace', 'Reported', 'Total CC'] - + headers.append('Total CC') output += '{} bugs have 10 or more emails in the CC list. (sorted in alphabetical order by number of users)\n'.format( len(statList['MostCCBugs'])) else: - headers = ['Id', 'Summary', 'Component', 'Version', 'isRegression', 'isBisected', - 'isEasyHack', 'haveBackTrace', 'Total Duplicates'] - + headers.append('Total Duplicates') output += '{} open bugs have 3 or more duplicates. (sorted in alphabetical order by number of duplicates)\n'.format( len(statList['MostDupeBugs'])) commit ec9c9e898109b0f24914820c0f945d8b2110df30 Author: Xisco Fauli <[email protected]> Date: Wed Jan 17 10:34:04 2018 +0100 QA tools: make sure bugs reopened after 6 months remain closed diff --git a/esc-reporting/qa-tools.py b/esc-reporting/qa-tools.py index 15df883..43283d4 100755 --- a/esc-reporting/qa-tools.py +++ b/esc-reporting/qa-tools.py @@ -69,6 +69,8 @@ needInfoFollowUpPingComment = "Dear Bug Submitter,\n\nPlease read this message i moveToNeedInfoComment = "I have set the bug's status to 'NEEDINFO'" +reopened6MonthsComment = "This bug has been in RESOLVED FIXED status for more than 6 months." + def util_convert_days_to_datetime(cfg, period): return cfg['todayDate'] - datetime.timedelta(days= period) @@ -675,6 +677,9 @@ def analyze_bugzilla(statList, bugzillaData, cfg): statList['weeklyReport']['comments_count'][commentMail] = 0 statList['weeklyReport']['comments_count'][commentMail] += 1 + if isOpen(rowStatus) and reopened6MonthsComment in comment['text']: + isReopened = True + #Check for duplicated comments if idx > 0 and comment['text'] == comments[idx-1]['text']: statList['tags']['addObsolete'].add(comment["id"]) commit c900d6ca8efba61e491cc1464c8c9ad3a29fe988 Author: Xisco Fauli <[email protected]> Date: Tue Jan 16 20:10:33 2018 +0100 QA tools: some changes to the weekly report diff --git a/esc-reporting/qa-tools.py b/esc-reporting/qa-tools.py index 36a21fa..15df883 100755 --- a/esc-reporting/qa-tools.py +++ b/esc-reporting/qa-tools.py @@ -147,6 +147,7 @@ def util_create_statList(): 'platform': {}, 'status': {s:0 for s in statutes_list}, 'resolution': {}, + 'unconfirmed': [] }, 'closed': { @@ -168,7 +169,8 @@ def util_create_statList(): }, 'weeklyReport': { - 'comments_count': 0, + 'newUsers': {}, + 'comments_count': {}, 'crashSignatures': {}, 'status_changed': {s: {'id':[], 'author': [] } for s in statutes_list}, 'keyword_added': {k: {'id':[], 'author': [], 'status': {s:0 for s in statutes_list}} for k in keywords_list}, @@ -195,7 +197,6 @@ def util_create_statList(): 'removeObsolete': set() }, 'people': {}, - 'newUsersPeriod': {}, 'targets': {t:{'count':0, 'people':{}} for t in targets_list}, 'period': {p:{'count':0, 'people':{}} for p in periods_list}, 'MostCCBugs': {}, @@ -314,6 +315,9 @@ def analyze_bugzilla(statList, bugzillaData, cfg): statList['bugs']['created']['id'].append(rowId) statList['bugs']['created']['author'].append(creatorMail) + if rowStatus == 'UNCONFIRMED': + statList['bugs']['created']['unconfirmed'].append(rowId) + week = str(creationDate.year) + '-' + str(creationDate.strftime("%V")) if week not in statList['bugs']['created']['split_week']: statList['bugs']['created']['split_week'][week] = 0 @@ -667,7 +671,9 @@ def analyze_bugzilla(statList, bugzillaData, cfg): util_increase_user_actions(statList, rowId, commentMail, bugTargets, 'comments', commentDate) if commentDate >= cfg['reportPeriod']: - statList['weeklyReport']['comments_count'] += 1 + if commentMail not in statList['weeklyReport']['comments_count']: + statList['weeklyReport']['comments_count'][commentMail] = 0 + statList['weeklyReport']['comments_count'][commentMail] += 1 #Check for duplicated comments if idx > 0 and comment['text'] == comments[idx-1]['text']: @@ -874,8 +880,8 @@ def analyze_bugzilla(statList, bugzillaData, cfg): if not statList['people'][k]['name']: statList['people'][k]['name'] = statList['people'][k]['email'].split('@')[0] - if statList['people'][k]['oldest'] >= cfg['newUserPeriod']: - statList['newUsersPeriod'][k] = statList['people'][k] + if statList['people'][k]['oldest'] >= cfg['reportPeriod']: + statList['weeklyReport']['newUsers'][k] = statList['people'][k] if statList['people'][k]['oldest'] >= cfg['newUserPeriod'] and len(statList['people'][k]['bugs']) >= 3 and \ statList['people'][k]['email'] not in cfg['configQA']['ignore']['newContributors']: print('\n=== New contributor: '+ statList['people'][k]['name'] + " (" + statList['people'][k]['email'] + ")") @@ -926,7 +932,7 @@ 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 = '\tDone by: ' + usersString = '\t\t+ Done by: ' for i1,i2 in d_view: try: @@ -937,14 +943,14 @@ def util_print_QA_line_weekly(fp, statList, dValue, action, isMetabug=False): print(usersString[:-2], file=fp) print(file=fp) -def util_create_short_url(fp, lBugs): +def util_create_short_url(fp, lBugs, text='Link'): url = "https://bugs.documentfoundation.org/buglist.cgi?bug_id=" for bug in lBugs: url += str(bug) + "%2C" url = url[:-3] shortener = Shortener('Tinyurl', timeout=9000) - print('\tLink: ' + shortener.short(url), file=fp) + print('\t\t+ ' + text + ': ' + shortener.short(url), file=fp) def util_print_QA_line_blog(fp, statList, dValue, total_count): @@ -1217,7 +1223,7 @@ def users_Report(statList): print('Users report from {} to {}'.format(cfg['newUserPeriod'].strftime("%Y-%m-%d"), statList['stat']['newest'])) #fp = open('/tmp/users_report.txt', 'w', encoding='utf-8') - print('{} new users in the last {} days'.format(len(statList['newUsersPeriod']), newUsersPeriod[:-1])) + print('{} new users in the last {} days'.format(len(statList['newUsersPeriod']), cfg['newUserPeriod'])) for v,k in statList['newUsersPeriod'].items(): print(v) @@ -1328,10 +1334,15 @@ def weekly_Report(statList) : statList['bugs']['created']['status']['UNCONFIRMED'], statList['bugs']['all']['status']['UNCONFIRMED']), file=fp) - util_create_short_url(fp, statList['bugs']['created']['id']) + util_create_short_url(fp, statList['bugs']['created']['id'], 'Created bugs') + util_create_short_url(fp, statList['bugs']['created']['unconfirmed'], 'Still unconfirmed bugs') print(file=fp) - print(' * {} comments have been written.'.format(statList['weeklyReport']['comments_count']), file=fp) + print(' * {} comments have been written by {} users.'.format( + sum(statList['weeklyReport']['comments_count'].values()), len(statList['weeklyReport']['comments_count'])), file=fp) + print(file=fp) + + print(' * {} new users have signed up to Bugzilla.'.format(len(statList['weeklyReport']['newUsers'])), file=fp) print(file=fp) if statList['weeklyReport']['status_changed']: commit a6299eb1738ef30d025e3f28f0f31570b3ea8898 Author: Xisco Fauli <[email protected]> Date: Tue Jan 16 18:42:06 2018 +0100 QA tools: fix a couple of problems diff --git a/esc-reporting/qa-tools.py b/esc-reporting/qa-tools.py index 35d490b..36a21fa 100755 --- a/esc-reporting/qa-tools.py +++ b/esc-reporting/qa-tools.py @@ -896,7 +896,8 @@ def util_print_QA_line_weekly(fp, statList, dValue, action, isMetabug=False): if isMetabug: dValueAux = {} for key, value in dValue.items(): - if int(key) in statList['bugs']['metabugAlias']: + if int(key) in statList['bugs']['metabugAlias'] and \ + statList['bugs']['metabugAlias'][int(key)]: dValueAux[statList['bugs']['metabugAlias'][int(key)][0]] = dValue[key] dValue = dValueAux @@ -1309,7 +1310,7 @@ def Blog_Report(statList) : print(file=fp) print('* Statuses of bugs moved to resolved', file=fp) - util_print_QA_line_created(fp, statList['bugs']['moveToClosed']['status']) + util_print_QA_line_created(fp, statList['bugs']['closed']['status']) fp.close() _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
