From 3791ffb3996a34313fd49913a8e15c82653336a9 Mon Sep 17 00:00:00 2001 From: Benjamin Mah Date: Fri, 6 Dec 2024 16:07:29 -0500 Subject: [PATCH 1/6] Added filter to delete bugs where the triage owner has requested to not get needinfo'd --- bugbot/rules/workflow/no_severity_ni.py | 27 +++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/bugbot/rules/workflow/no_severity_ni.py b/bugbot/rules/workflow/no_severity_ni.py index 669d7cb3d..26a25f10c 100644 --- a/bugbot/rules/workflow/no_severity_ni.py +++ b/bugbot/rules/workflow/no_severity_ni.py @@ -11,6 +11,7 @@ from bugbot.escalation import Escalation from bugbot.nag_me import Nag from bugbot.round_robin import RoundRobin +from bugbot.user_activity import UserActivity class NoSeverityNeedInfo(BzCleaner, Nag): @@ -76,6 +77,13 @@ def handle_bug(self, bug, data): or utils.get_last_no_bot_comment_date(bug) > self.activity_date ): return None + + bugid = str(bug["id"]) + + data[bugid] = { + "triage_owner": bug["triage_owner"], + } + return bug def get_mail_to_auto_ni(self, bug): @@ -193,6 +201,25 @@ def get_bz_params(self, date): return params + def filter_bugs(self, bugs): + users_info = UserActivity(include_fields=["groups", "requests"]).check_users( + set(bug["triage_owner"] for bug in bugs.values()), + keep_active=True, + fetch_employee_info=True, + ) + + for bug_id, bug in list(bugs.items()): + user_info = users_info[bug["triage_owner"]] + if "requests" in user_info: + if user_info["requests"]["needinfo"]["blocked"]: + del bugs[bug_id] + return bugs + + def get_bugs(self, *args, **kwargs): + bugs = super().get_bugs(*args, **kwargs) + bugs = self.filter_bugs(bugs) + return bugs + if __name__ == "__main__": NoSeverityNeedInfo().run() From 7a1a05a096f122049624f9e35b47df9b82e7bd7b Mon Sep 17 00:00:00 2001 From: Benjamin Mah Date: Thu, 2 Jan 2025 09:16:19 -0500 Subject: [PATCH 2/6] Removed deletion of bugs, now limiting --- bugbot/rules/workflow/no_severity_ni.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/bugbot/rules/workflow/no_severity_ni.py b/bugbot/rules/workflow/no_severity_ni.py index 26a25f10c..9c200b42b 100644 --- a/bugbot/rules/workflow/no_severity_ni.py +++ b/bugbot/rules/workflow/no_severity_ni.py @@ -208,12 +208,17 @@ def filter_bugs(self, bugs): fetch_employee_info=True, ) - for bug_id, bug in list(bugs.items()): - user_info = users_info[bug["triage_owner"]] - if "requests" in user_info: - if user_info["requests"]["needinfo"]["blocked"]: - del bugs[bug_id] - return bugs + # for bug_id, bug in list(bugs.items()): + # user_info = users_info[bug["triage_owner"]] + # if "requests" in user_info: + # if user_info["requests"]["needinfo"]["blocked"]: + # del bugs[bug_id] + filtered_bugs = { + bug_id: bug + for bug_id, bug in bugs.items() + if not users_info[bug["triage_owner"]]["requests"]["needinfo"]["blocked"] + } + return filtered_bugs def get_bugs(self, *args, **kwargs): bugs = super().get_bugs(*args, **kwargs) From da56d15cdbd52adc2792dc7fb4643a3e070a8808 Mon Sep 17 00:00:00 2001 From: Benjamin Mah Date: Thu, 2 Jan 2025 13:02:21 -0500 Subject: [PATCH 3/6] Removed filtering, just ignoring needinfo --- bugbot/rules/workflow/no_severity_ni.py | 62 ++++++++++++++++++------- 1 file changed, 46 insertions(+), 16 deletions(-) diff --git a/bugbot/rules/workflow/no_severity_ni.py b/bugbot/rules/workflow/no_severity_ni.py index 9c200b42b..84877e7fa 100644 --- a/bugbot/rules/workflow/no_severity_ni.py +++ b/bugbot/rules/workflow/no_severity_ni.py @@ -201,28 +201,58 @@ def get_bz_params(self, date): return params - def filter_bugs(self, bugs): + def bughandler(self, bug, data): + """bug handler for the Bugzilla query""" + if bug["id"] in self.cache: + return + + if self.handle_bug(bug, data) is None: + return + + bugid = str(bug["id"]) + res = {"id": bugid} + + auto_ni = self.get_mail_to_auto_ni(bug) + self.add_auto_ni(bugid, auto_ni) + + triage_owner = bug.get("triage_owner") users_info = UserActivity(include_fields=["groups", "requests"]).check_users( - set(bug["triage_owner"] for bug in bugs.values()), - keep_active=True, - fetch_employee_info=True, + {triage_owner}, keep_active=True, fetch_employee_info=True ) + if not ( + triage_owner in users_info + and users_info[triage_owner]["requests"]["needinfo"]["blocked"] + ): + auto_ni = self.get_mail_to_auto_ni(bug) + self.add_auto_ni(bugid, auto_ni) - # for bug_id, bug in list(bugs.items()): - # user_info = users_info[bug["triage_owner"]] - # if "requests" in user_info: - # if user_info["requests"]["needinfo"]["blocked"]: - # del bugs[bug_id] - filtered_bugs = { - bug_id: bug - for bug_id, bug in bugs.items() - if not users_info[bug["triage_owner"]]["requests"]["needinfo"]["blocked"] - } - return filtered_bugs + res["summary"] = self.get_summary(bug) + + if self.has_assignee(): + res["assignee"] = utils.get_name_from_user_detail(bug["assigned_to_detail"]) + + if self.has_needinfo(): + s = set() + for flag in utils.get_needinfo(bug): + s.add(flag["requestee"]) + res["needinfos"] = sorted(s) + + if self.has_product_component(): + for k in ["product", "component"]: + res[k] = bug[k] + + if isinstance(self, Nag): + bug = self.set_people_to_nag(bug, res) + if not bug: + return + + if bugid in data: + data[bugid].update(res) + else: + data[bugid] = res def get_bugs(self, *args, **kwargs): bugs = super().get_bugs(*args, **kwargs) - bugs = self.filter_bugs(bugs) return bugs From a00eef2b9127717c57af772165bb30f9383efa61 Mon Sep 17 00:00:00 2001 From: Benjamin Mah Date: Thu, 2 Jan 2025 13:03:27 -0500 Subject: [PATCH 4/6] Removed code --- bugbot/rules/workflow/no_severity_ni.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/bugbot/rules/workflow/no_severity_ni.py b/bugbot/rules/workflow/no_severity_ni.py index 84877e7fa..63cd8ec01 100644 --- a/bugbot/rules/workflow/no_severity_ni.py +++ b/bugbot/rules/workflow/no_severity_ni.py @@ -212,9 +212,6 @@ def bughandler(self, bug, data): bugid = str(bug["id"]) res = {"id": bugid} - auto_ni = self.get_mail_to_auto_ni(bug) - self.add_auto_ni(bugid, auto_ni) - triage_owner = bug.get("triage_owner") users_info = UserActivity(include_fields=["groups", "requests"]).check_users( {triage_owner}, keep_active=True, fetch_employee_info=True From 6d4c3da537bbc0d1faa3e2ef3610f60539002723 Mon Sep 17 00:00:00 2001 From: Benjamin Mah Date: Thu, 2 Jan 2025 16:35:11 -0500 Subject: [PATCH 5/6] Removed bughandler --- bugbot/rules/workflow/no_severity_ni.py | 54 +++++-------------------- 1 file changed, 11 insertions(+), 43 deletions(-) diff --git a/bugbot/rules/workflow/no_severity_ni.py b/bugbot/rules/workflow/no_severity_ni.py index 63cd8ec01..abb4c9a1b 100644 --- a/bugbot/rules/workflow/no_severity_ni.py +++ b/bugbot/rules/workflow/no_severity_ni.py @@ -201,55 +201,23 @@ def get_bz_params(self, date): return params - def bughandler(self, bug, data): - """bug handler for the Bugzilla query""" - if bug["id"] in self.cache: - return - - if self.handle_bug(bug, data) is None: - return - - bugid = str(bug["id"]) - res = {"id": bugid} - - triage_owner = bug.get("triage_owner") + def filter_bugs(self, bugs): users_info = UserActivity(include_fields=["groups", "requests"]).check_users( - {triage_owner}, keep_active=True, fetch_employee_info=True + set(bug["triage_owner"] for bug in bugs.values()), + keep_active=True, + fetch_employee_info=True, ) - if not ( - triage_owner in users_info - and users_info[triage_owner]["requests"]["needinfo"]["blocked"] - ): - auto_ni = self.get_mail_to_auto_ni(bug) - self.add_auto_ni(bugid, auto_ni) - - res["summary"] = self.get_summary(bug) - if self.has_assignee(): - res["assignee"] = utils.get_name_from_user_detail(bug["assigned_to_detail"]) - - if self.has_needinfo(): - s = set() - for flag in utils.get_needinfo(bug): - s.add(flag["requestee"]) - res["needinfos"] = sorted(s) - - if self.has_product_component(): - for k in ["product", "component"]: - res[k] = bug[k] - - if isinstance(self, Nag): - bug = self.set_people_to_nag(bug, res) - if not bug: - return - - if bugid in data: - data[bugid].update(res) - else: - data[bugid] = res + filtered_bugs = { + bug_id: bug + for bug_id, bug in bugs.items() + if not users_info[bug["triage_owner"]]["requests"]["needinfo"]["blocked"] + } + return filtered_bugs def get_bugs(self, *args, **kwargs): bugs = super().get_bugs(*args, **kwargs) + bugs = self.filter_bugs(bugs) return bugs From a44d6dc24787bcef13588fadbb37f015eab81f35 Mon Sep 17 00:00:00 2001 From: Benjamin Mah Date: Mon, 6 Jan 2025 18:20:09 -0500 Subject: [PATCH 6/6] Fixed KeyError when filtering bugs --- bugbot/rules/workflow/no_severity_ni.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bugbot/rules/workflow/no_severity_ni.py b/bugbot/rules/workflow/no_severity_ni.py index abb4c9a1b..cdd89fc53 100644 --- a/bugbot/rules/workflow/no_severity_ni.py +++ b/bugbot/rules/workflow/no_severity_ni.py @@ -211,7 +211,8 @@ def filter_bugs(self, bugs): filtered_bugs = { bug_id: bug for bug_id, bug in bugs.items() - if not users_info[bug["triage_owner"]]["requests"]["needinfo"]["blocked"] + if "requests" in users_info[bug["triage_owner"]] + and not users_info[bug["triage_owner"]]["requests"]["needinfo"]["blocked"] } return filtered_bugs