bugbot/rules/meta_no_deps_no_activity.py (45 lines of code) (raw):
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
# You can obtain one at http://mozilla.org/MPL/2.0/.
from bugbot import utils
from bugbot.bzcleaner import BzCleaner
from bugbot.people import People
class MetaNoDepsNoActivity(BzCleaner):
def __init__(self):
super(MetaNoDepsNoActivity, self).__init__()
self.people = People.get_instance()
self.nmonths = utils.get_config(self.name(), "months_lookup")
self.max_ni = utils.get_config(self.name(), "max_ni")
self.skiplist = set(utils.get_config(self.name(), "skiplist", []))
def description(self):
return "Bugs with meta keyword, not depending on bugs and no activity for the last {} months".format(
self.nmonths
)
def get_extra_for_needinfo_template(self):
return self.get_extra_for_template()
def get_extra_for_template(self):
return {"nmonths": self.nmonths}
def get_auto_ni_skiplist(self):
return super().get_auto_ni_skiplist() | self.skiplist
def get_max_ni(self):
return self.max_ni
def get_mail_to_auto_ni(self, bug):
for field in ["assigned_to", "triage_owner"]:
person = bug.get(field, "")
if person and self.people.is_mozilla(person):
return {"mail": person, "nickname": bug[f"{field}_detail"]["nick"]}
return None
def get_bz_params(self, date):
fields = ["assigned_to", "triage_owner"]
params = {
"include_fields": fields,
"resolution": "---",
"f1": "keywords",
"o1": "casesubstring",
"v1": "meta",
"f2": "days_elapsed",
"o2": "greaterthan",
"v2": self.nmonths * 30,
"f3": "dependson",
"o3": "isempty",
}
return params
if __name__ == "__main__":
MetaNoDepsNoActivity().run()