esc-reporting/esc-automate.py |    9 ----
 esc-reporting/qa-tools.py     |   78 ++++++++++++++++++++++++++++++++++++------
 2 files changed, 68 insertions(+), 19 deletions(-)

New commits:
commit cb35ed6dd1aa3769193a20d0992fdce45c343d85
Author: Xisco Fauli <aniste...@gmail.com>
Date:   Tue Sep 26 13:05:30 2017 +0200

    QA tools: tag old untouch massping comments as obsolete automatically
    
    The script tags as 'obsolete' all comment starting with
    
    ** Please read this message in its entirety before responding **
    
    if the last comment is a massping and it's already tagged as obsolete,
    remove it

diff --git a/esc-reporting/qa-tools.py b/esc-reporting/qa-tools.py
index 30eee2d..ace4e65 100755
--- a/esc-reporting/qa-tools.py
+++ b/esc-reporting/qa-tools.py
@@ -13,6 +13,7 @@ import datetime
 import json
 from pyshorteners import Shortener
 import re
+import requests
 
 homeDir = '/home/xisco/dev-tools/esc-reporting/'
 
@@ -176,12 +177,16 @@ def util_create_statList():
         'massping':
             {
                 'needinfo': [],
-                'obsolete': [],
                 'untouched': [],
                 '1year': [],
                 '2years': [],
                 '3years': []
             },
+        'tags':
+            {
+                'addObsolete': [],
+                'removeObsolete': []
+            },
         'people': {},
         'newUsersPeriod': {},
         'targets': {t:{'count':0, 'people':{}} for t in targets_list},
@@ -205,10 +210,14 @@ def util_check_bugzilla_mail(statList, mail, name, 
date=None, bug=None):
     if bug:
        statList['people'][mail]['bugs'].add(bug)
 
-def get_bugzilla(cfg):
+def get_bugzilla():
     fileName = homeDir + 'dump/bugzilla_dump.json'
     return util_load_file(fileName)
 
+def get_config():
+    fileName = homeDir + 'config.json'
+    return util_load_file(fileName)
+
 def isOpen(status):
     return status == 'NEW' or status == 'ASSIGNED' or status == 'REOPENED'
 
@@ -371,6 +380,7 @@ def analyze_bugzilla(statList, bugzillaData, cfg, lIgnore):
             isReopened = False
             closeDate = None
             reopenerEmail = ""
+
             for action in row['history']:
                 actionMail = action['who']
                 actionDate = datetime.datetime.strptime(action['when'], 
"%Y-%m-%dT%H:%M:%SZ")
@@ -674,6 +684,11 @@ def analyze_bugzilla(statList, bugzillaData, cfg, lIgnore):
                 if commentDate >= cfg[reportPeriod]:
                     statList['detailedReport']['comments_count'] += 1
 
+                if isOpen(rowStatus) and \
+                        "obsolete" not in [x.lower() for x in comment["tags"]] 
and \
+                        (comment["text"].startswith(untouchedPingComment) or \
+                        "[NinjaEdit]" in comment["text"]):
+                    statList['tags']['addObsolete'].append(comment["id"])
 
             if len(comments) > 0:
                 if comments[-1]["text"].startswith(untouchedPingComment):
@@ -685,8 +700,12 @@ def analyze_bugzilla(statList, bugzillaData, cfg, lIgnore):
                             statList['massping']['2years'].append(rowId)
                     else:
                         statList['massping']['1year'].append(rowId)
-                        if "obsolete" in comments[-1]["tags"]:
-                            statList['massping']['obsolete'].append(rowId)
+
+                    if isOpen(rowStatus):
+                        if "obsolete" not in [x.lower() for x in 
comments[-1]["tags"]]:
+                            statList['tags']['addObsolete'].pop()
+                        else:
+                            
statList['tags']['removeObsolete'].append(comments[-1]["id"])
                 elif needInfoPingComment in comments[-1]["text"]:
                     if rowStatus == 'NEEDINFO':
                         statList['massping']['needinfo'].append(rowId)
@@ -1019,11 +1038,10 @@ def create_wikimedia_table_by_period(cfg, statList):
         print(output.replace('wikitable', 'wikitable sortable'), file=fp)
         fp.close()
 
-def untouchedBugs_Report(startList):
+def untouchedBugs_Report(statList):
     fp = open('/tmp/untouch_report.txt', 'w', encoding='utf-8')
 
     print('* Untouched Bugs Report from {} to 
{}'.format(cfg[reportPeriod].strftime("%Y-%m-%d"), statList['stat']['newest']), 
file=fp )
-
     for key, value in sorted(statList['massping'].items()):
         print(file=fp)
         print('* ' + key + ' - ' + str(len(value)) + ' bugs.', file=fp)
@@ -1038,7 +1056,44 @@ def untouchedBugs_Report(startList):
 
     fp.close()
 
-def users_Report(statList) :
+def automated_tagging(statList):
+    #tags are sometimes not saved in bugzilla_dump.json
+    #thus, save those comments automatically tagged as obsolete
+    #so we don't tag them again next time
+    lAddObsolete = []
+    filename = "addObsolete.txt"
+    if os.path.exists(filename):
+        f = open(filename, 'r')
+        lAddObsolete = f.read().splitlines()
+        f.close()
+
+    for comment_id in statList['tags']['addObsolete']:
+        if str(comment_id) not in lAddObsolete:
+            command = '{"comment_id" : ' + str(comment_id) + ', "add" : 
["obsolete"]}'
+            url = 'https://bugs.documentfoundation.org/rest/bug/comment/' + \
+                str(comment_id) + '/tags' + '?api_key=' + 
cfg['bugzilla']['api-key']
+            r = requests.put(url, command)
+            if os.path.exists(filename):
+                append_write = 'a'
+            else:
+                append_write = 'w'
+            f = open(filename,append_write)
+            f.write(str(comment_id) + '\n')
+            f.close()
+            print(str(comment_id) + ' - ' +  r.text)
+            r.close()
+        else:
+            print(str(comment_id) + ' - doing nothing')
+
+    for comment_id in statList['tags']['removeObsolete']:
+        command = '{"comment_id" : ' + str(comment_id) + ', "remove" : 
["obsolete"]}'
+        url = 'https://bugs.documentfoundation.org/rest/bug/comment/' + \
+                str(comment_id) + '/tags' + '?api_key=' + 
cfg['bugzilla']['api-key']
+        r = requests.put(url, command)
+        print(str(comment_id) + ' - ' +  r.text)
+        r.close()
+
+def users_Report(statList):
     print('Users report from {} to 
{}'.format(cfg[newUsersPeriod].strftime("%Y-%m-%d"), 
statList['stat']['newest']))
     #fp = open('/tmp/users_report.txt', 'w', encoding='utf-8')
 
@@ -1253,7 +1308,7 @@ def Weekly_Report(statList) :
     fp.close()
 
 def runCfg(homeDir):
-    cfg = {}
+    cfg = get_config()
     cfg['homedir'] = homeDir
     cfg['todayDate'] = datetime.datetime.now().replace(hour=0, 
minute=0,second=0)
     cfg[reportPeriod] = cfg['todayDate'] - datetime.timedelta(days= 
int(reportPeriod[:-1]))
@@ -1273,12 +1328,13 @@ if __name__ == '__main__':
 
     cfg = runCfg(homeDir)
 
-    bugzillaData = get_bugzilla(cfg)
+    bugzillaData = get_bugzilla()
 
     lIgnore = []
     if os.path.exists("ignore.txt"):
         f = open('ignore.txt', 'r')
         lIgnore = f.read().splitlines()
+        f.close()
 
     statList = util_create_statList()
     analyze_bugzilla(statList, bugzillaData, cfg, lIgnore)
@@ -1298,10 +1354,12 @@ if __name__ == '__main__':
             crashes_Report(statList)
         elif sys.argv[1] == 'ping':
             untouchedBugs_Report(statList)
+        elif sys.argv[1] == 'tag':
+            automated_tagging(statList)
         elif sys.argv[1] == 'weekly':
             Weekly_Report(statList)
         else:
-            print('You must use \'report\',\'blog\', \'target\', \'period\', 
\'users\', \'crash\', \'ping\' or \'weekly\' as parameter.')
+            print("You must use 'report','blog', 'target', 'period', 'users', 
'crash', 'ping', 'tag' or 'weekly' as parameter.")
             sys.exit(1)
 
     print('End of report')
commit c781ea1972f9bab1159b23b8e1b1c148daa9dd00
Author: Xisco Fauli <aniste...@gmail.com>
Date:   Tue Sep 26 02:20:58 2017 +0200

    These are unused after 252dd394b1df99035c80a3b3da9c53dac3bdaf86

diff --git a/esc-reporting/esc-automate.py b/esc-reporting/esc-automate.py
index 3674147..2acfd97 100755
--- a/esc-reporting/esc-automate.py
+++ b/esc-reporting/esc-automate.py
@@ -168,12 +168,6 @@ def handle_bugzilla_cc(id, email):
 
 
 
-def handle_bugzilla_ui_cc(id, email):
-    command = '{"cc": {"add": 
["libreoffice-ux-adv...@lists.freedesktop.org"]}}'
-    doBugzilla(id, command)
-
-
-
 def handle_mail_pdf(email, name):
     global cfg, pdfFieldData
 
@@ -257,10 +251,7 @@ def runAutomate():
     executeLoop(handle_gerrit_comment, 'gerrit', 'to_abandon_comment')
     executeLoop(handle_bugzilla_unassign, 'bugzilla', 'to_unassign_unassign')
     executeLoop(handle_bugzilla_comment, 'bugzilla', 'to_unassign_comment')
-    executeLoop(handle_bugzilla_reset_status, 'bugzilla', 
'assign_problem_status')
-    executeLoop(handle_bugzilla_reset_user, 'bugzilla', 'assign_problem_user')
     executeLoop(handle_bugzilla_cc, 'bugzilla', 'missing_cc')
-    executeLoop(handle_bugzilla_ui_cc, 'bugzilla', 'missing_ui_cc')
     executeLoop(handle_mail_miss_you, 'mail', 'we_miss_you_email')
     executeLoop(handle_mail_pdf, 'mail', 'award_1st_email')
 
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to