qa/bugzillaAutomation.py  |   90 +++++++++++++++++++++++++++++++++++++---------
 qa/bugzillaChecker.py     |    9 ----
 qa/comments.py            |    7 +++
 qa/common.py              |    4 --
 qa/createMassPingLists.py |    8 ++--
 5 files changed, 84 insertions(+), 34 deletions(-)

New commits:
commit dc797fcc14b79858896f66ca59415700595135d9
Author:     Xisco Fauli <[email protected]>
AuthorDate: Thu May 9 00:08:49 2019 +0200
Commit:     Xisco Fauli <[email protected]>
CommitDate: Thu May 9 00:08:49 2019 +0200

    QA: this can go now

diff --git a/qa/bugzillaChecker.py b/qa/bugzillaChecker.py
index 326087f..8845958 100755
--- a/qa/bugzillaChecker.py
+++ b/qa/bugzillaChecker.py
@@ -39,9 +39,6 @@ retestUnconfirmedPeriodDays = 30
 # Unconfirmed bugs which last comment is written by the reporter
 inactiveUnconfirmedPeriodDays = 180
 
-# Needinfo bugs which last comment is written by the reporter
-retestNeedinfoPeriodDays = 60
-
 # Assigned bugs without activity
 inactiveAssignedPeriodDays = 90
 
@@ -316,11 +313,6 @@ def analyze_bugzilla_checkers(statList, bugzillaData, cfg):
                         value = [ rowId, row['last_change_time'], 
comments[-1]['creator'] ]
                         util_add_to_result(lResults, 
'unconfirmed_last_comment_from_reporter', value)
 
-                elif rowStatus == 'NEEDINFO' and comments[-1]['creator'] == 
creatorMail and \
-                        datetime.datetime.strptime(row['last_change_time'], 
"%Y-%m-%dT%H:%M:%SZ") >= cfg['retestNeedinfoPeriod']:
-                    value = [ rowId, row['last_change_time'], 
comments[-1]['creator'] ]
-                    util_add_to_result(lResults, 'needinfo_provided', value)
-
             if autoFixed:
                 util_add_to_result(lResults, 'auto_fixed', autoFixedValue)
 
@@ -484,7 +476,6 @@ def runCfg():
     cfg['coloredInactiveUnconfirmedPeriod'] = 
common.util_convert_days_to_datetime(coloredPeriodDays + 
inactiveUnconfirmedPeriodDays)
     cfg['inactiveUnconfirmedPeriod'] = 
common.util_convert_days_to_datetime(inactiveUnconfirmedPeriodDays)
     cfg['coloredRetestUnconfirmedPeriod'] = 
common.util_convert_days_to_datetime(coloredPeriodDays + 
retestUnconfirmedPeriodDays)
-    cfg['retestNeedinfoPeriod'] = 
common.util_convert_days_to_datetime(retestNeedinfoPeriodDays)
     cfg['inactiveAssignedPeriod'] = 
common.util_convert_days_to_datetime(inactiveAssignedPeriodDays)
     cfg['coloredInactiveAssignedPeriod'] = 
common.util_convert_days_to_datetime(coloredPeriodDays + 
inactiveAssignedPeriodDays)
     return cfg
commit 974fbaa41d33f114514954b718bea0cef8ccc34d
Author:     Xisco Fauli <[email protected]>
AuthorDate: Wed May 8 23:53:50 2019 +0200
Commit:     Xisco Fauli <[email protected]>
CommitDate: Wed May 8 23:53:50 2019 +0200

    QA: Automatically move NEEDINFO bugs back to UNCONFIRMED...
    
    if the last comment is from the reporter

diff --git a/qa/bugzillaAutomation.py b/qa/bugzillaAutomation.py
index afa71a1..dc6ba3b 100755
--- a/qa/bugzillaAutomation.py
+++ b/qa/bugzillaAutomation.py
@@ -32,7 +32,8 @@ def util_create_statList():
             },
         'untouched': {},
         'needInfoPing': {},
-        'needInfoFollowUpPing': {}
+        'needInfoFollowUpPing': {},
+        'needInfoToUnconfirmed': {}
     }
 def analyze_bugzilla(statList, bugzillaData, cfg):
     print("Analyze bugzilla\n", end="", flush=True)
@@ -68,12 +69,16 @@ def analyze_bugzilla(statList, bugzillaData, cfg):
                         "obsolete" not in [x.lower() for x in comment["tags"]] 
and \
                         ('MassPing-UntouchedBug' in comment["text"] or \
                         comment["text"].startswith("A polite ping, still 
working on this bug") or \
+                        '[Automated Action]' in comment["text"] or \
                         'MassPing-NeedInfo' in comment["text"]):
                     statList['tags']['addObsolete'].add(comment["id"])
 
             if len(comments) > 0:
-                if 'MassPing-UntouchedBug' in comments[-1]["text"]:
+                if rowStatus == 'NEEDINFO' and \
+                        comments[-1]['creator'] == row['creator']:
+                    statList['needInfoToUnconfirmed'][rowId] = rowCreator
 
+                if 'MassPing-UntouchedBug' in comments[-1]["text"]:
                     if rowStatus != 'NEEDINFO':
                         if "obsolete" not in [x.lower() for x in 
comments[-1]["tags"]]:
                             
statList['tags']['addObsolete'].remove(comments[-1]["id"])
@@ -103,7 +108,7 @@ def analyze_bugzilla(statList, bugzillaData, cfg):
                             row['product'] == 'Impress Remote') and 
row['severity'] != 'enhancement':
                         statList['untouched'][rowId] = rowCreator
 
-def post_comments_to_bugzilla(statList, keyInStatList, commentId, comment, 
changeCommand=""):
+def post_comments_to_bugzilla(statList, keyInStatList, commentId, comment, 
addFirstLine, changeCommand=""):
     for bugId, creator in statList[keyInStatList].items():
         bugId = str(bugId)
 
@@ -114,34 +119,42 @@ def post_comments_to_bugzilla(statList, keyInStatList, 
commentId, comment, chang
 
         if commentId not in rawData['bugs'][bugId]['comments'][-1]['text']:
 
-            firstLine = "Dear " + creator + ",\\n\\n"
-            command = '{"comment" : "' + firstLine + comment.replace('\n', 
'\\n') + '", "is_private" : false}'
+            if addFirstLine:
+                firstLine = "Dear " + creator + ",\\n\\n"
+                comment = firstLine + comment
+            command = '{"comment" : "' + comment.replace('\n', '\\n') + '", 
"is_private" : false}'
             urlPost = 'https://bugs.documentfoundation.org/rest/bug/' + bugId 
+ '/comment?api_key=' + cfg['configQA']['api-key']
             rPost = requests.post(urlPost, command.encode('utf-8'))
             print('Bug: ' + bugId + ' - Comment: ' + 
str(json.loads(rPost.text)['id']))
             rPost.close()
 
-            if changeStatus:
+            if changeCommand:
                 urlPut = 'https://bugs.documentfoundation.org/rest/bug/' + 
bugId + '?api_key=' + cfg['configQA']['api-key']
                 rPut = requests.put(urlPut, changeCommand.encode('utf-8'))
-                print('Bug: ' + bugId + ' Changed to RESOLVED 
INSUFFICIENTDATA')
+                print('Bug: ' + bugId + ' - ' + changeCommand)
                 rPut.close()
 
+def automated_needInfoToUnconfirmed(statList):
+
+    print('== Move NEEDINFO to UNCONFIRMED ==')
+    command = '{"status" : "UNCONFIRMED"}'
+    post_comments_to_bugzilla(statList, "needInfoToUnconfirmed", 
'NeedInfo-To-Unconfirmed', comments.needInfoToUnconfirmedComment, False, 
command)
+
 def automated_needInfoFollowUpPing(statList):
 
     print('== NEEDINFO FollowUp Ping ==')
     command = '{"status" : "RESOLVED", "resolution" : "INSUFFICIENTDATA"}'
-    post_comments_to_bugzilla(statList, "needInfoFollowUpPing", 
'MassPing-NeedInfo-FollowUp', comments.needInfoFollowUpPingComment, command)
+    post_comments_to_bugzilla(statList, "needInfoFollowUpPing", 
'MassPing-NeedInfo-FollowUp', comments.needInfoFollowUpPingComment, True, 
command)
 
 def automated_needInfoPing(statList):
 
     print('== NEEDINFO Ping ==')
-    post_comments_to_bugzilla(statList, "needInfoPing", 
'MassPing-NeedInfo-Ping', comments.needInfoPingComment)
+    post_comments_to_bugzilla(statList, "needInfoPing", 
'MassPing-NeedInfo-Ping', comments.needInfoPingComment, True)
 
 def automated_untouched(statList):
 
     print('== Untouched bugs ==')
-    post_comments_to_bugzilla(statList, "untouched", 'MassPing-UntouchedBug', 
comments.untouchedPingComment)
+    post_comments_to_bugzilla(statList, "untouched", 'MassPing-UntouchedBug', 
comments.untouchedPingComment, True)
 
 def automated_tagging(statList):
     #tags are sometimes not saved in bugzilla_dump.json
@@ -203,3 +216,4 @@ if __name__ == '__main__':
     automated_untouched(statList)
     automated_needInfoPing(statList)
     automated_needInfoFollowUpPing(statList)
+    automated_needInfoToUnconfirmed(statList)
diff --git a/qa/comments.py b/qa/comments.py
index 8222ed4..62aed5f 100644
--- a/qa/comments.py
+++ b/qa/comments.py
@@ -3,3 +3,5 @@ untouchedPingComment = "To make sure we're focusing on the bugs 
that affect our
 needInfoPingComment = "This bug has been in NEEDINFO status with no change for 
at least\n6 months. Please provide the requested information as soon 
as\npossible and mark the bug as UNCONFIRMED. Due to regular bug\ntracker 
maintenance, if the bug is still in NEEDINFO status with\nno change in 30 days 
the QA team will close the bug as INSUFFICIENTDATA\ndue to lack of needed 
information.\n\nFor more information about our NEEDINFO policy please read 
the\nwiki located 
here:\nhttps://wiki.documentfoundation.org/QA/Bugzilla/Fields/Status/NEEDINFO\n\nIf
 you have already provided the requested information, please\nmark the bug as 
UNCONFIRMED so that the QA team knows that the\nbug is ready to be confirmed.\n 
\nThank you for helping us make LibreOffice even better for everyone!\n\nWarm 
Regards,\nQA Team\n\nMassPing-NeedInfo-Ping"
 
 needInfoFollowUpPingComment = "Please read this message in its entirety before 
proceeding.\n\nYour bug report is being closed as INSUFFICIENTDATA due to 
inactivity and\na lack of information which is needed in order to 
accurately\nreproduce and confirm the problem. We encourage you to retest\nyour 
bug against the latest release. If the issue is still\npresent in the latest 
stable release, we need the following\ninformation (please ignore any that 
you've already provided):\n\na) Provide details of your system including your 
operating\n   system and the latest version of LibreOffice that you have\n   
confirmed the bug to be present\n\nb) Provide easy to reproduce steps – the 
simpler the better\n\nc) Provide any test case(s) which will help us confirm 
the problem\n\nd) Provide screenshots of the problem if you think it might 
help\n\ne) Read all comments and provide any requested information\n\nOnce all 
of this is done, please set the bug back to UNCONFIRMED\nand we will attempt to 
re
 produce the issue. Please do not:\n\na) respond via email \n\nb) update the 
version field in the bug or any of the other details\n   on the top section of 
our bug tracker\n\nWarm Regards,\nQA Team\n\nMassPing-NeedInfo-FollowUp"
+
+needInfoToUnconfirmedComment = "[Automated Action] NeedInfo-To-Unconfirmed"
commit 0a21ff5fc28a6598e06c1193391e4ecc76dde760
Author:     Xisco Fauli <[email protected]>
AuthorDate: Wed May 8 23:08:18 2019 +0200
Commit:     Xisco Fauli <[email protected]>
CommitDate: Wed May 8 23:08:18 2019 +0200

    QA: Automate the NEEDINFO followup ping

diff --git a/qa/bugzillaAutomation.py b/qa/bugzillaAutomation.py
index 0a25a6b..afa71a1 100755
--- a/qa/bugzillaAutomation.py
+++ b/qa/bugzillaAutomation.py
@@ -18,6 +18,8 @@ untouchedPeriodDays = 365
 
 needInfoPingPeriodDays = 180
 
+needInfoFollowUpPingPeriodDays = 30
+
 #Path to addObsolete.txt
 addObsoleteDir = '/home/xisco/dev-tools/qa'
 
@@ -29,7 +31,8 @@ def util_create_statList():
                 'removeObsolete': set()
             },
         'untouched': {},
-        'needInfoPing': {}
+        'needInfoPing': {},
+        'needInfoFollowUpPing': {}
     }
 def analyze_bugzilla(statList, bugzillaData, cfg):
     print("Analyze bugzilla\n", end="", flush=True)
@@ -82,7 +85,11 @@ def analyze_bugzilla(statList, bugzillaData, cfg):
                             
statList['tags']['addObsolete'].remove(comments[-1]["id"])
                         else:
                             
statList['tags']['removeObsolete'].add(comments[-1]["id"])
-                elif 
comments[-1]["text"].startswith(needInfoFollowUpPingComment) or \
+                    else:
+                        if datetime.datetime.strptime(row['last_change_time'], 
"%Y-%m-%dT%H:%M:%SZ") < cfg['needInfoFollowUpPingPeriod']:
+                            statList['needInfoFollowUpPing'][rowId] = 
rowCreator
+
+                elif 'MassPing-NeedInfo' in comments[-1]["text"] or \
                         comments[-1]["text"].startswith("A polite ping, still 
working on this bug"):
                     if rowStatus != 'NEEDINFO':
                         if "obsolete" not in [x.lower() for x in 
comments[-1]["tags"]]:
@@ -96,9 +103,10 @@ def analyze_bugzilla(statList, bugzillaData, cfg):
                             row['product'] == 'Impress Remote') and 
row['severity'] != 'enhancement':
                         statList['untouched'][rowId] = rowCreator
 
-def post_comments_to_bugzilla(statList, keyInStatList, commentId, comment):
+def post_comments_to_bugzilla(statList, keyInStatList, commentId, comment, 
changeCommand=""):
     for bugId, creator in statList[keyInStatList].items():
         bugId = str(bugId)
+
         urlGet = 'https://bugs.documentfoundation.org/rest/bug/' + bugId + 
'/comment?api_key=' + cfg['configQA']['api-key']
         rGet = requests.get(urlGet)
         rawData = json.loads(rGet.text)
@@ -113,6 +121,18 @@ def post_comments_to_bugzilla(statList, keyInStatList, 
commentId, comment):
             print('Bug: ' + bugId + ' - Comment: ' + 
str(json.loads(rPost.text)['id']))
             rPost.close()
 
+            if changeStatus:
+                urlPut = 'https://bugs.documentfoundation.org/rest/bug/' + 
bugId + '?api_key=' + cfg['configQA']['api-key']
+                rPut = requests.put(urlPut, changeCommand.encode('utf-8'))
+                print('Bug: ' + bugId + ' Changed to RESOLVED 
INSUFFICIENTDATA')
+                rPut.close()
+
+def automated_needInfoFollowUpPing(statList):
+
+    print('== NEEDINFO FollowUp Ping ==')
+    command = '{"status" : "RESOLVED", "resolution" : "INSUFFICIENTDATA"}'
+    post_comments_to_bugzilla(statList, "needInfoFollowUpPing", 
'MassPing-NeedInfo-FollowUp', comments.needInfoFollowUpPingComment, command)
+
 def automated_needInfoPing(statList):
 
     print('== NEEDINFO Ping ==')
@@ -164,6 +184,7 @@ def runCfg():
     cfg = common.get_config()
     cfg['untouchedPeriod'] = 
common.util_convert_days_to_datetime(untouchedPeriodDays)
     cfg['needInfoPingPeriod'] = 
common.util_convert_days_to_datetime(needInfoPingPeriodDays)
+    cfg['needInfoFollowUpPingPeriod'] = 
common.util_convert_days_to_datetime(needInfoFollowUpPingPeriodDays)
 
     return cfg
 
@@ -181,3 +202,4 @@ if __name__ == '__main__':
     automated_tagging(statList)
     automated_untouched(statList)
     automated_needInfoPing(statList)
+    automated_needInfoFollowUpPing(statList)
diff --git a/qa/comments.py b/qa/comments.py
index 4e28c84..8222ed4 100644
--- a/qa/comments.py
+++ b/qa/comments.py
@@ -2,4 +2,4 @@ untouchedPingComment = "To make sure we're focusing on the bugs 
that affect our
 
 needInfoPingComment = "This bug has been in NEEDINFO status with no change for 
at least\n6 months. Please provide the requested information as soon 
as\npossible and mark the bug as UNCONFIRMED. Due to regular bug\ntracker 
maintenance, if the bug is still in NEEDINFO status with\nno change in 30 days 
the QA team will close the bug as INSUFFICIENTDATA\ndue to lack of needed 
information.\n\nFor more information about our NEEDINFO policy please read 
the\nwiki located 
here:\nhttps://wiki.documentfoundation.org/QA/Bugzilla/Fields/Status/NEEDINFO\n\nIf
 you have already provided the requested information, please\nmark the bug as 
UNCONFIRMED so that the QA team knows that the\nbug is ready to be confirmed.\n 
\nThank you for helping us make LibreOffice even better for everyone!\n\nWarm 
Regards,\nQA Team\n\nMassPing-NeedInfo-Ping"
 
-needInfoFollowUpPingComment = "Please read this message in its entirety before 
proceeding.\n\nYour bug report is being closed as INSUFFICIENTDATA due to 
inactivity and\na lack of information which is needed in order to 
accurately\nreproduce and confirm the problem. We encourage you to retest\nyour 
bug against the latest release. If the issue is still\npresent in the latest 
stable release, we need the following\ninformation (please ignore any that 
you've already provided):\n\na) Provide details of your system including your 
operating\n   system and the latest version of LibreOffice that you have\n   
confirmed the bug to be present\n\nb) Provide easy to reproduce steps – the 
simpler the better\n\nc) Provide any test case(s) which will help us confirm 
the problem\n\nd) Provide screenshots of the problem if you think it might 
help\n\ne) Read all comments and provide any requested information\n\nOnce all 
of this is done, please set the bug back to UNCONFIRMED\nand we will attempt to 
re
 produce the issue. Please do not:\n\na) respond via email \n\nb) update the 
version field in the bug or any of the other details\n   on the top section of 
our bug tracker\n\nWarm Regards,\nQA Team\n\nMassPing-NeedInfo"
+needInfoFollowUpPingComment = "Please read this message in its entirety before 
proceeding.\n\nYour bug report is being closed as INSUFFICIENTDATA due to 
inactivity and\na lack of information which is needed in order to 
accurately\nreproduce and confirm the problem. We encourage you to retest\nyour 
bug against the latest release. If the issue is still\npresent in the latest 
stable release, we need the following\ninformation (please ignore any that 
you've already provided):\n\na) Provide details of your system including your 
operating\n   system and the latest version of LibreOffice that you have\n   
confirmed the bug to be present\n\nb) Provide easy to reproduce steps – the 
simpler the better\n\nc) Provide any test case(s) which will help us confirm 
the problem\n\nd) Provide screenshots of the problem if you think it might 
help\n\ne) Read all comments and provide any requested information\n\nOnce all 
of this is done, please set the bug back to UNCONFIRMED\nand we will attempt to 
re
 produce the issue. Please do not:\n\na) respond via email \n\nb) update the 
version field in the bug or any of the other details\n   on the top section of 
our bug tracker\n\nWarm Regards,\nQA Team\n\nMassPing-NeedInfo-FollowUp"
commit 0a28e2cdb867f940595bc3cb06680c0e7e4868a7
Author:     Xisco Fauli <[email protected]>
AuthorDate: Wed May 8 21:21:58 2019 +0200
Commit:     Xisco Fauli <[email protected]>
CommitDate: Wed May 8 21:21:58 2019 +0200

    QA: move comments to their own file

diff --git a/qa/bugzillaAutomation.py b/qa/bugzillaAutomation.py
index c4c24ef..0a25a6b 100755
--- a/qa/bugzillaAutomation.py
+++ b/qa/bugzillaAutomation.py
@@ -7,14 +7,13 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 #
 
+import comments
 import common
 import requests
 import datetime
 import os
 import json
 
-needInfoFollowUpPingComment = "Dear Bug Submitter,\n\nPlease read this message 
in its entirety before proceeding."
-
 untouchedPeriodDays = 365
 
 needInfoPingPeriodDays = 180
@@ -66,8 +65,7 @@ def analyze_bugzilla(statList, bugzillaData, cfg):
                         "obsolete" not in [x.lower() for x in comment["tags"]] 
and \
                         ('MassPing-UntouchedBug' in comment["text"] or \
                         comment["text"].startswith("A polite ping, still 
working on this bug") or \
-                        'MassPing-NeedInfo-Ping' in comment["text"] or \
-                        
comment["text"].startswith(needInfoFollowUpPingComment)):
+                        'MassPing-NeedInfo' in comment["text"]):
                     statList['tags']['addObsolete'].add(comment["id"])
 
             if len(comments) > 0:
@@ -118,12 +116,12 @@ def post_comments_to_bugzilla(statList, keyInStatList, 
commentId, comment):
 def automated_needInfoPing(statList):
 
     print('== NEEDINFO Ping ==')
-    post_comments_to_bugzilla(statList, "needInfoPing", 
'MassPing-NeedInfo-Ping', common.needInfoPingComment)
+    post_comments_to_bugzilla(statList, "needInfoPing", 
'MassPing-NeedInfo-Ping', comments.needInfoPingComment)
 
 def automated_untouched(statList):
 
     print('== Untouched bugs ==')
-    post_comments_to_bugzilla(statList, "untouched", 'MassPing-UntouchedBug', 
common.untouchedPingComment)
+    post_comments_to_bugzilla(statList, "untouched", 'MassPing-UntouchedBug', 
comments.untouchedPingComment)
 
 def automated_tagging(statList):
     #tags are sometimes not saved in bugzilla_dump.json
diff --git a/qa/comments.py b/qa/comments.py
new file mode 100644
index 0000000..4e28c84
--- /dev/null
+++ b/qa/comments.py
@@ -0,0 +1,5 @@
+untouchedPingComment = "To make sure we're focusing on the bugs that affect 
our users today, LibreOffice QA is asking bug reporters and confirmers to 
retest open, confirmed bugs which have not been touched for over a 
year.\n\nThere have been thousands of bug fixes and commits since anyone 
checked on this bug report. During that time, it's possible that the bug has 
been fixed, or the details of the problem have changed. We'd really appreciate 
your help in getting confirmation that the bug is still present.\n\nIf you have 
time, please do the following:\n\nTest to see if the bug is still present with 
the latest version of LibreOffice from 
https://www.libreoffice.org/download/\n\nIf the bug is present, please leave a 
comment that includes the information from Help - About LibreOffice.\n \nIf the 
bug is NOT present, please set the bug's Status field to RESOLVED-WORKSFORME 
and leave a comment that includes the information from Help - About 
LibreOffice.\n\nPlease DO NOT\n\nUpdate the versi
 on field\nReply via email (please reply directly on the bug tracker)\nSet the 
bug's Status field to RESOLVED - FIXED (this status has a particular meaning 
that is not \nappropriate in this case)\n\n\nIf you want to do more to help you 
can test to see if your issue is a REGRESSION. To do so:\n1. Download and 
install oldest version of LibreOffice (usually 3.3 unless your bug pertains to 
a feature added after 3.3) from 
http://downloadarchive.documentfoundation.org/libreoffice/old/\n\n2. Test your 
bug\n3. Leave a comment with your results.\n4a. If the bug was present with 3.3 
- set version to 'inherited from OOo';\n4b. If the bug was not present in 3.3 - 
add 'regression' to keyword\n\n\nFeel free to come ask questions or to say 
hello in our QA chat: 
https://kiwiirc.com/nextclient/irc.freenode.net/#libreoffice-qa\n\nThank you 
for helping us make LibreOffice even better for everyone!\n\nWarm Regards,\nQA 
Team\n\nMassPing-UntouchedBug"
+
+needInfoPingComment = "This bug has been in NEEDINFO status with no change for 
at least\n6 months. Please provide the requested information as soon 
as\npossible and mark the bug as UNCONFIRMED. Due to regular bug\ntracker 
maintenance, if the bug is still in NEEDINFO status with\nno change in 30 days 
the QA team will close the bug as INSUFFICIENTDATA\ndue to lack of needed 
information.\n\nFor more information about our NEEDINFO policy please read 
the\nwiki located 
here:\nhttps://wiki.documentfoundation.org/QA/Bugzilla/Fields/Status/NEEDINFO\n\nIf
 you have already provided the requested information, please\nmark the bug as 
UNCONFIRMED so that the QA team knows that the\nbug is ready to be confirmed.\n 
\nThank you for helping us make LibreOffice even better for everyone!\n\nWarm 
Regards,\nQA Team\n\nMassPing-NeedInfo-Ping"
+
+needInfoFollowUpPingComment = "Please read this message in its entirety before 
proceeding.\n\nYour bug report is being closed as INSUFFICIENTDATA due to 
inactivity and\na lack of information which is needed in order to 
accurately\nreproduce and confirm the problem. We encourage you to retest\nyour 
bug against the latest release. If the issue is still\npresent in the latest 
stable release, we need the following\ninformation (please ignore any that 
you've already provided):\n\na) Provide details of your system including your 
operating\n   system and the latest version of LibreOffice that you have\n   
confirmed the bug to be present\n\nb) Provide easy to reproduce steps – the 
simpler the better\n\nc) Provide any test case(s) which will help us confirm 
the problem\n\nd) Provide screenshots of the problem if you think it might 
help\n\ne) Read all comments and provide any requested information\n\nOnce all 
of this is done, please set the bug back to UNCONFIRMED\nand we will attempt to 
re
 produce the issue. Please do not:\n\na) respond via email \n\nb) update the 
version field in the bug or any of the other details\n   on the top section of 
our bug tracker\n\nWarm Regards,\nQA Team\n\nMassPing-NeedInfo"
diff --git a/qa/common.py b/qa/common.py
index f233b14..3b94860 100755
--- a/qa/common.py
+++ b/qa/common.py
@@ -45,10 +45,6 @@ system_list = ['All', 'Linux (All)', 'Android', 'Windows 
(All)', 'Mac OS X (All)
 
 urlShowBug = "https://bugs.documentfoundation.org/show_bug.cgi?id=";
 
-untouchedPingComment = "To make sure we're focusing on the bugs that affect 
our users today, LibreOffice QA is asking bug reporters and confirmers to 
retest open, confirmed bugs which have not been touched for over a 
year.\n\nThere have been thousands of bug fixes and commits since anyone 
checked on this bug report. During that time, it's possible that the bug has 
been fixed, or the details of the problem have changed. We'd really appreciate 
your help in getting confirmation that the bug is still present.\n\nIf you have 
time, please do the following:\n\nTest to see if the bug is still present with 
the latest version of LibreOffice from 
https://www.libreoffice.org/download/\n\nIf the bug is present, please leave a 
comment that includes the information from Help - About LibreOffice.\n \nIf the 
bug is NOT present, please set the bug's Status field to RESOLVED-WORKSFORME 
and leave a comment that includes the information from Help - About 
LibreOffice.\n\nPlease DO NOT\n\nUpdate the versi
 on field\nReply via email (please reply directly on the bug tracker)\nSet the 
bug's Status field to RESOLVED - FIXED (this status has a particular meaning 
that is not \nappropriate in this case)\n\n\nIf you want to do more to help you 
can test to see if your issue is a REGRESSION. To do so:\n1. Download and 
install oldest version of LibreOffice (usually 3.3 unless your bug pertains to 
a feature added after 3.3) from 
http://downloadarchive.documentfoundation.org/libreoffice/old/\n\n2. Test your 
bug\n3. Leave a comment with your results.\n4a. If the bug was present with 3.3 
- set version to 'inherited from OOo';\n4b. If the bug was not present in 3.3 - 
add 'regression' to keyword\n\n\nFeel free to come ask questions or to say 
hello in our QA chat: 
https://kiwiirc.com/nextclient/irc.freenode.net/#libreoffice-qa\n\nThank you 
for helping us make LibreOffice even better for everyone!\n\nWarm Regards,\nQA 
Team\n\nMassPing-UntouchedBug"
-
-needInfoPingComment = "This bug has been in NEEDINFO status with no change for 
at least\n6 months. Please provide the requested information as soon 
as\npossible and mark the bug as UNCONFIRMED. Due to regular bug\ntracker 
maintenance, if the bug is still in NEEDINFO status with\nno change in 30 days 
the QA team will close the bug as INSUFFICIENTDATA\ndue to lack of needed 
information.\n\nFor more information about our NEEDINFO policy please read 
the\nwiki located 
here:\nhttps://wiki.documentfoundation.org/QA/Bugzilla/Fields/Status/NEEDINFO\n\nIf
 you have already provided the requested information, please\nmark the bug as 
UNCONFIRMED so that the QA team knows that the\nbug is ready to be confirmed.\n 
\nThank you for helping us make LibreOffice even better for everyone!\n\nWarm 
Regards,\nQA Team\n\nMassPing-NeedInfo-Ping"
-
 def util_convert_days_to_datetime(period):
     todayDate = datetime.datetime.now().replace(hour=0, minute=0,second=0)
     return todayDate - datetime.timedelta(days= period)
commit 5544cc38cd526684801672b0caaf5ca49167134d
Author:     Xisco Fauli <[email protected]>
AuthorDate: Wed May 8 21:08:46 2019 +0200
Commit:     Xisco Fauli <[email protected]>
CommitDate: Wed May 8 21:08:46 2019 +0200

    QA: we can remove the first line from this comment now

diff --git a/qa/common.py b/qa/common.py
index 6972ac1..f233b14 100755
--- a/qa/common.py
+++ b/qa/common.py
@@ -45,7 +45,7 @@ system_list = ['All', 'Linux (All)', 'Android', 'Windows 
(All)', 'Mac OS X (All)
 
 urlShowBug = "https://bugs.documentfoundation.org/show_bug.cgi?id=";
 
-untouchedPingComment = "** Please read this message in its entirety before 
responding **\n\nTo make sure we're focusing on the bugs that affect our users 
today, LibreOffice QA is asking bug reporters and confirmers to retest open, 
confirmed bugs which have not been touched for over a year.\n\nThere have been 
thousands of bug fixes and commits since anyone checked on this bug report. 
During that time, it's possible that the bug has been fixed, or the details of 
the problem have changed. We'd really appreciate your help in getting 
confirmation that the bug is still present.\n\nIf you have time, please do the 
following:\n\nTest to see if the bug is still present with the latest version 
of LibreOffice from https://www.libreoffice.org/download/\n\nIf the bug is 
present, please leave a comment that includes the information from Help - About 
LibreOffice.\n \nIf the bug is NOT present, please set the bug's Status field 
to RESOLVED-WORKSFORME and leave a comment that includes the information
  from Help - About LibreOffice.\n\nPlease DO NOT\n\nUpdate the version 
field\nReply via email (please reply directly on the bug tracker)\nSet the 
bug's Status field to RESOLVED - FIXED (this status has a particular meaning 
that is not \nappropriate in this case)\n\n\nIf you want to do more to help you 
can test to see if your issue is a REGRESSION. To do so:\n1. Download and 
install oldest version of LibreOffice (usually 3.3 unless your bug pertains to 
a feature added after 3.3) from 
http://downloadarchive.documentfoundation.org/libreoffice/old/\n\n2. Test your 
bug\n3. Leave a comment with your results.\n4a. If the bug was present with 3.3 
- set version to 'inherited from OOo';\n4b. If the bug was not present in 3.3 - 
add 'regression' to keyword\n\n\nFeel free to come ask questions or to say 
hello in our QA chat: 
https://kiwiirc.com/nextclient/irc.freenode.net/#libreoffice-qa\n\nThank you 
for helping us make LibreOffice even better for everyone!\n\nWarm Regards,\nQA 
Team\n\nMassPing-
 UntouchedBug"
+untouchedPingComment = "To make sure we're focusing on the bugs that affect 
our users today, LibreOffice QA is asking bug reporters and confirmers to 
retest open, confirmed bugs which have not been touched for over a 
year.\n\nThere have been thousands of bug fixes and commits since anyone 
checked on this bug report. During that time, it's possible that the bug has 
been fixed, or the details of the problem have changed. We'd really appreciate 
your help in getting confirmation that the bug is still present.\n\nIf you have 
time, please do the following:\n\nTest to see if the bug is still present with 
the latest version of LibreOffice from 
https://www.libreoffice.org/download/\n\nIf the bug is present, please leave a 
comment that includes the information from Help - About LibreOffice.\n \nIf the 
bug is NOT present, please set the bug's Status field to RESOLVED-WORKSFORME 
and leave a comment that includes the information from Help - About 
LibreOffice.\n\nPlease DO NOT\n\nUpdate the versi
 on field\nReply via email (please reply directly on the bug tracker)\nSet the 
bug's Status field to RESOLVED - FIXED (this status has a particular meaning 
that is not \nappropriate in this case)\n\n\nIf you want to do more to help you 
can test to see if your issue is a REGRESSION. To do so:\n1. Download and 
install oldest version of LibreOffice (usually 3.3 unless your bug pertains to 
a feature added after 3.3) from 
http://downloadarchive.documentfoundation.org/libreoffice/old/\n\n2. Test your 
bug\n3. Leave a comment with your results.\n4a. If the bug was present with 3.3 
- set version to 'inherited from OOo';\n4b. If the bug was not present in 3.3 - 
add 'regression' to keyword\n\n\nFeel free to come ask questions or to say 
hello in our QA chat: 
https://kiwiirc.com/nextclient/irc.freenode.net/#libreoffice-qa\n\nThank you 
for helping us make LibreOffice even better for everyone!\n\nWarm Regards,\nQA 
Team\n\nMassPing-UntouchedBug"
 
 needInfoPingComment = "This bug has been in NEEDINFO status with no change for 
at least\n6 months. Please provide the requested information as soon 
as\npossible and mark the bug as UNCONFIRMED. Due to regular bug\ntracker 
maintenance, if the bug is still in NEEDINFO status with\nno change in 30 days 
the QA team will close the bug as INSUFFICIENTDATA\ndue to lack of needed 
information.\n\nFor more information about our NEEDINFO policy please read 
the\nwiki located 
here:\nhttps://wiki.documentfoundation.org/QA/Bugzilla/Fields/Status/NEEDINFO\n\nIf
 you have already provided the requested information, please\nmark the bug as 
UNCONFIRMED so that the QA team knows that the\nbug is ready to be confirmed.\n 
\nThank you for helping us make LibreOffice even better for everyone!\n\nWarm 
Regards,\nQA Team\n\nMassPing-NeedInfo-Ping"
 
commit 98bea7a9616f61a05f15ba83aa1fbec549a9eca5
Author:     Xisco Fauli <[email protected]>
AuthorDate: Wed May 8 20:56:53 2019 +0200
Commit:     Xisco Fauli <[email protected]>
CommitDate: Wed May 8 21:06:20 2019 +0200

    QA: unify this

diff --git a/qa/bugzillaAutomation.py b/qa/bugzillaAutomation.py
index eaefbd6..c4c24ef 100755
--- a/qa/bugzillaAutomation.py
+++ b/qa/bugzillaAutomation.py
@@ -29,7 +29,7 @@ def util_create_statList():
                 'addObsolete': set(),
                 'removeObsolete': set()
             },
-        'untouched': [],
+        'untouched': {},
         'needInfoPing': {}
     }
 def analyze_bugzilla(statList, bugzillaData, cfg):
@@ -64,14 +64,14 @@ def analyze_bugzilla(statList, bugzillaData, cfg):
 
                 if rowStatus != 'NEEDINFO' and \
                         "obsolete" not in [x.lower() for x in comment["tags"]] 
and \
-                        
(comment["text"].startswith(common.untouchedPingComment[:250]) or \
+                        ('MassPing-UntouchedBug' in comment["text"] or \
                         comment["text"].startswith("A polite ping, still 
working on this bug") or \
                         'MassPing-NeedInfo-Ping' in comment["text"] or \
                         
comment["text"].startswith(needInfoFollowUpPingComment)):
                     statList['tags']['addObsolete'].add(comment["id"])
 
             if len(comments) > 0:
-                if 
comments[-1]["text"].startswith(common.untouchedPingComment[:250]):
+                if 'MassPing-UntouchedBug' in comments[-1]["text"]:
 
                     if rowStatus != 'NEEDINFO':
                         if "obsolete" not in [x.lower() for x in 
comments[-1]["tags"]]:
@@ -96,46 +96,34 @@ def analyze_bugzilla(statList, bugzillaData, cfg):
                             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['untouched'].append(rowId)
+                        statList['untouched'][rowId] = rowCreator
 
-def automated_needInfoPing(statList):
-
-    print('== NEEDINFO Ping ==')
-    for bugId, creator in statList['needInfoPing'].items():
+def post_comments_to_bugzilla(statList, keyInStatList, commentId, comment):
+    for bugId, creator in statList[keyInStatList].items():
         bugId = str(bugId)
-
-
         urlGet = 'https://bugs.documentfoundation.org/rest/bug/' + bugId + 
'/comment?api_key=' + cfg['configQA']['api-key']
         rGet = requests.get(urlGet)
         rawData = json.loads(rGet.text)
         rGet.close()
 
-        if 'MassPing-NeedInfo-Ping' not in 
rawData['bugs'][bugId]['comments'][-1]['text']:
+        if commentId not in rawData['bugs'][bugId]['comments'][-1]['text']:
 
             firstLine = "Dear " + creator + ",\\n\\n"
-            command = '{"comment" : "' + firstLine + 
common.needInfoPingComment.replace('\n', '\\n') + '", "is_private" : false}'
+            command = '{"comment" : "' + firstLine + comment.replace('\n', 
'\\n') + '", "is_private" : false}'
             urlPost = 'https://bugs.documentfoundation.org/rest/bug/' + bugId 
+ '/comment?api_key=' + cfg['configQA']['api-key']
             rPost = requests.post(urlPost, command.encode('utf-8'))
             print('Bug: ' + bugId + ' - Comment: ' + 
str(json.loads(rPost.text)['id']))
             rPost.close()
 
-def automated_untouched(statList):
+def automated_needInfoPing(statList):
 
-    print('== Untouched bugs ==')
-    for bugId in statList['untouched']:
-        bugId = str(bugId)
+    print('== NEEDINFO Ping ==')
+    post_comments_to_bugzilla(statList, "needInfoPing", 
'MassPing-NeedInfo-Ping', common.needInfoPingComment)
 
-        urlGet = 'https://bugs.documentfoundation.org/rest/bug/' + bugId + 
'/comment?api_key=' + cfg['configQA']['api-key']
-        rGet = requests.get(urlGet)
-        rawData = json.loads(rGet.text)
-        rGet.close()
+def automated_untouched(statList):
 
-        if rawData['bugs'][bugId]['comments'][-1]['text'][:250] != 
common.untouchedPingComment[:250]:
-            command = '{"comment" : "' + 
common.untouchedPingComment.replace('\n', '\\n') + '", "is_private" : false}'
-            urlPost = 'https://bugs.documentfoundation.org/rest/bug/' + bugId 
+ '/comment?api_key=' + cfg['configQA']['api-key']
-            rPost = requests.post(urlPost, command)
-            print('Bug: ' + bugId + ' - Comment: ' + 
str(json.loads(rPost.text)['id']))
-            rPost.close()
+    print('== Untouched bugs ==')
+    post_comments_to_bugzilla(statList, "untouched", 'MassPing-UntouchedBug', 
common.untouchedPingComment)
 
 def automated_tagging(statList):
     #tags are sometimes not saved in bugzilla_dump.json
diff --git a/qa/createMassPingLists.py b/qa/createMassPingLists.py
index 81db4b2..14e6dbc 100755
--- a/qa/createMassPingLists.py
+++ b/qa/createMassPingLists.py
@@ -28,10 +28,10 @@ def analyze_bugzilla(statList, bugzillaData):
             comments = row['comments'][1:]
 
             if len(comments) > 0:
-                if 
comments[-1]["text"].startswith(common.untouchedPingComment[:250]):
+                if "MassPing-UntouchedBug" in comments[-1]["text"]:
 
-                    if len(comments) > 1 and 
comments[-2]["text"].startswith(common.untouchedPingComment[:250]):
-                        if len(comments) > 2 and 
comments[-3]["text"].startswith(common.untouchedPingComment[:250]):
+                    if len(comments) > 1 and "MassPing-UntouchedBug" in 
comments[-2]["text"]:
+                        if len(comments) > 2 and "MassPing-UntouchedBug" in 
comments[-3]["text"]:
                             statList['3years'].append(rowId)
                         else:
                             statList['2years'].append(rowId)
commit 2fb7d9087705f00dbaaa8e98167a6915627fc6c5
Author:     Xisco Fauli <[email protected]>
AuthorDate: Wed May 8 20:31:07 2019 +0200
Commit:     Xisco Fauli <[email protected]>
CommitDate: Wed May 8 20:31:07 2019 +0200

    QA: Automate NEEDINFO ping

diff --git a/qa/bugzillaAutomation.py b/qa/bugzillaAutomation.py
index b81e2f9..eaefbd6 100755
--- a/qa/bugzillaAutomation.py
+++ b/qa/bugzillaAutomation.py
@@ -17,6 +17,8 @@ needInfoFollowUpPingComment = "Dear Bug Submitter,\n\nPlease 
read this message i
 
 untouchedPeriodDays = 365
 
+needInfoPingPeriodDays = 180
+
 #Path to addObsolete.txt
 addObsoleteDir = '/home/xisco/dev-tools/qa'
 
@@ -27,7 +29,8 @@ def util_create_statList():
                 'addObsolete': set(),
                 'removeObsolete': set()
             },
-        'untouched': []
+        'untouched': [],
+        'needInfoPing': {}
     }
 def analyze_bugzilla(statList, bugzillaData, cfg):
     print("Analyze bugzilla\n", end="", flush=True)
@@ -45,6 +48,14 @@ def analyze_bugzilla(statList, bugzillaData, cfg):
 
             rowKeywords = row['keywords']
 
+            rowCreator = row['creator_detail']['real_name']
+            if not rowCreator:
+                rowCreator = row['creator_detail']['email'].split('@')[0]
+
+            if rowStatus == "NEEDINFO" and \
+                    datetime.datetime.strptime(row['last_change_time'], 
"%Y-%m-%dT%H:%M:%SZ") < cfg['needInfoPingPeriod']:
+                statList['needInfoPing'][rowId] = rowCreator
+
             comments = row['comments'][1:]
             for idx, comment in enumerate(comments):
                 #Check for duplicated comments
@@ -55,7 +66,7 @@ def analyze_bugzilla(statList, bugzillaData, cfg):
                         "obsolete" not in [x.lower() for x in comment["tags"]] 
and \
                         
(comment["text"].startswith(common.untouchedPingComment[:250]) or \
                         comment["text"].startswith("A polite ping, still 
working on this bug") or \
-                        comment["text"].startswith(common.needInfoPingComment) 
or \
+                        'MassPing-NeedInfo-Ping' in comment["text"] or \
                         
comment["text"].startswith(needInfoFollowUpPingComment)):
                     statList['tags']['addObsolete'].add(comment["id"])
 
@@ -67,7 +78,7 @@ def analyze_bugzilla(statList, bugzillaData, cfg):
                             
statList['tags']['addObsolete'].remove(comments[-1]["id"])
                         else:
                             
statList['tags']['removeObsolete'].add(comments[-1]["id"])
-                elif 
comments[-1]["text"].startswith(common.needInfoPingComment):
+                elif 'MassPing-NeedInfo-Ping' in comments[-1]["text"]:
                     if rowStatus != 'NEEDINFO':
                         if "obsolete" not in [x.lower() for x in 
comments[-1]["tags"]]:
                             
statList['tags']['addObsolete'].remove(comments[-1]["id"])
@@ -87,12 +98,32 @@ def analyze_bugzilla(statList, bugzillaData, cfg):
                             row['product'] == 'Impress Remote') and 
row['severity'] != 'enhancement':
                         statList['untouched'].append(rowId)
 
+def automated_needInfoPing(statList):
+
+    print('== NEEDINFO Ping ==')
+    for bugId, creator in statList['needInfoPing'].items():
+        bugId = str(bugId)
+
+
+        urlGet = 'https://bugs.documentfoundation.org/rest/bug/' + bugId + 
'/comment?api_key=' + cfg['configQA']['api-key']
+        rGet = requests.get(urlGet)
+        rawData = json.loads(rGet.text)
+        rGet.close()
+
+        if 'MassPing-NeedInfo-Ping' not in 
rawData['bugs'][bugId]['comments'][-1]['text']:
+
+            firstLine = "Dear " + creator + ",\\n\\n"
+            command = '{"comment" : "' + firstLine + 
common.needInfoPingComment.replace('\n', '\\n') + '", "is_private" : false}'
+            urlPost = 'https://bugs.documentfoundation.org/rest/bug/' + bugId 
+ '/comment?api_key=' + cfg['configQA']['api-key']
+            rPost = requests.post(urlPost, command.encode('utf-8'))
+            print('Bug: ' + bugId + ' - Comment: ' + 
str(json.loads(rPost.text)['id']))
+            rPost.close()
+
 def automated_untouched(statList):
 
     print('== Untouched bugs ==')
     for bugId in statList['untouched']:
         bugId = str(bugId)
-        command = '{"comment" : "' + common.untouchedPingComment.replace('\n', 
'\\n') + '", "is_private" : false}'
 
         urlGet = 'https://bugs.documentfoundation.org/rest/bug/' + bugId + 
'/comment?api_key=' + cfg['configQA']['api-key']
         rGet = requests.get(urlGet)
@@ -100,6 +131,7 @@ def automated_untouched(statList):
         rGet.close()
 
         if rawData['bugs'][bugId]['comments'][-1]['text'][:250] != 
common.untouchedPingComment[:250]:
+            command = '{"comment" : "' + 
common.untouchedPingComment.replace('\n', '\\n') + '", "is_private" : false}'
             urlPost = 'https://bugs.documentfoundation.org/rest/bug/' + bugId 
+ '/comment?api_key=' + cfg['configQA']['api-key']
             rPost = requests.post(urlPost, command)
             print('Bug: ' + bugId + ' - Comment: ' + 
str(json.loads(rPost.text)['id']))
@@ -145,6 +177,7 @@ def automated_tagging(statList):
 def runCfg():
     cfg = common.get_config()
     cfg['untouchedPeriod'] = 
common.util_convert_days_to_datetime(untouchedPeriodDays)
+    cfg['needInfoPingPeriod'] = 
common.util_convert_days_to_datetime(needInfoPingPeriodDays)
 
     return cfg
 
@@ -161,3 +194,4 @@ if __name__ == '__main__':
 
     automated_tagging(statList)
     automated_untouched(statList)
+    automated_needInfoPing(statList)
diff --git a/qa/common.py b/qa/common.py
index 34d6feb..6972ac1 100755
--- a/qa/common.py
+++ b/qa/common.py
@@ -47,7 +47,7 @@ urlShowBug = 
"https://bugs.documentfoundation.org/show_bug.cgi?id=";
 
 untouchedPingComment = "** Please read this message in its entirety before 
responding **\n\nTo make sure we're focusing on the bugs that affect our users 
today, LibreOffice QA is asking bug reporters and confirmers to retest open, 
confirmed bugs which have not been touched for over a year.\n\nThere have been 
thousands of bug fixes and commits since anyone checked on this bug report. 
During that time, it's possible that the bug has been fixed, or the details of 
the problem have changed. We'd really appreciate your help in getting 
confirmation that the bug is still present.\n\nIf you have time, please do the 
following:\n\nTest to see if the bug is still present with the latest version 
of LibreOffice from https://www.libreoffice.org/download/\n\nIf the bug is 
present, please leave a comment that includes the information from Help - About 
LibreOffice.\n \nIf the bug is NOT present, please set the bug's Status field 
to RESOLVED-WORKSFORME and leave a comment that includes the information
  from Help - About LibreOffice.\n\nPlease DO NOT\n\nUpdate the version 
field\nReply via email (please reply directly on the bug tracker)\nSet the 
bug's Status field to RESOLVED - FIXED (this status has a particular meaning 
that is not \nappropriate in this case)\n\n\nIf you want to do more to help you 
can test to see if your issue is a REGRESSION. To do so:\n1. Download and 
install oldest version of LibreOffice (usually 3.3 unless your bug pertains to 
a feature added after 3.3) from 
http://downloadarchive.documentfoundation.org/libreoffice/old/\n\n2. Test your 
bug\n3. Leave a comment with your results.\n4a. If the bug was present with 3.3 
- set version to 'inherited from OOo';\n4b. If the bug was not present in 3.3 - 
add 'regression' to keyword\n\n\nFeel free to come ask questions or to say 
hello in our QA chat: 
https://kiwiirc.com/nextclient/irc.freenode.net/#libreoffice-qa\n\nThank you 
for helping us make LibreOffice even better for everyone!\n\nWarm Regards,\nQA 
Team\n\nMassPing-
 UntouchedBug"
 
-needInfoPingComment = "Dear Bug Submitter,\n\nThis bug has been in NEEDINFO 
status with no change for at least"
+needInfoPingComment = "This bug has been in NEEDINFO status with no change for 
at least\n6 months. Please provide the requested information as soon 
as\npossible and mark the bug as UNCONFIRMED. Due to regular bug\ntracker 
maintenance, if the bug is still in NEEDINFO status with\nno change in 30 days 
the QA team will close the bug as INSUFFICIENTDATA\ndue to lack of needed 
information.\n\nFor more information about our NEEDINFO policy please read 
the\nwiki located 
here:\nhttps://wiki.documentfoundation.org/QA/Bugzilla/Fields/Status/NEEDINFO\n\nIf
 you have already provided the requested information, please\nmark the bug as 
UNCONFIRMED so that the QA team knows that the\nbug is ready to be confirmed.\n 
\nThank you for helping us make LibreOffice even better for everyone!\n\nWarm 
Regards,\nQA Team\n\nMassPing-NeedInfo-Ping"
 
 def util_convert_days_to_datetime(period):
     todayDate = datetime.datetime.now().replace(hour=0, minute=0,second=0)
diff --git a/qa/createMassPingLists.py b/qa/createMassPingLists.py
index a13f80f..81db4b2 100755
--- a/qa/createMassPingLists.py
+++ b/qa/createMassPingLists.py
@@ -38,7 +38,7 @@ def analyze_bugzilla(statList, bugzillaData):
                     else:
                         statList['1year'].append(rowId)
 
-                elif 
comments[-1]["text"].startswith(common.needInfoPingComment):
+                elif 'MassPing-NeedInfo-Ping' in comments[-1]["text"]:
                     if row['status'] == 'NEEDINFO':
                         statList['needinfo'].append(rowId)
 
_______________________________________________
Libreoffice-commits mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to