[Libreoffice-commits] dev-tools.git: 8 commits - esc-reporting/qa-tools.py

Xisco Fauli anistenis at gmail.com
Mon Jan 22 11:26:08 UTC 2018


 esc-reporting/qa-tools.py |  183 ++++++++++++++++++++++++++++------------------
 1 file changed, 115 insertions(+), 68 deletions(-)

New commits:
commit b8717de0c8e9d5c67879d8bc1b2b6cd60d345b19
Author: Xisco Fauli <anistenis at gmail.com>
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 <anistenis at gmail.com>
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'] != 'libreoffice-bugs at lists.freedesktop.org':
@@ -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'] != 'libreoffice-bugs at lists.freedesktop.org' and \
                     (rowStatus == 'NEW' or rowStatus == 'UNCONFIRMED')):
commit bd15f4a2631b78ff02b88dd3a5bf8798767ba376
Author: Xisco Fauli <anistenis at gmail.com>
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 <anistenis at gmail.com>
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 <anistenis at gmail.com>
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 <anistenis at gmail.com>
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 <anistenis at gmail.com>
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 <anistenis at gmail.com>
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()
 


More information about the Libreoffice-commits mailing list