in bugbot/nag_me.py [0:0]
def prepare_mails(self):
if not self.data:
return []
template = self.nag_template()
if not template:
return []
# If we escalating only to hierarchical managers, we should always have a
# management chain.
fail_on_missing_mgmt_chain = self.escalation.is_hierarchical_escalation_only()
extra = self.get_extra_for_nag_template()
env = Environment(loader=FileSystemLoader("templates"))
template = env.get_template(template)
mails = []
for manager, info in self.data.items():
# The same bug can be several times in the list
# because we send an email to a team.
added_bug_ids = set()
data = []
To = sorted(info.keys())
components = set()
management_chain = set()
for person in To:
data += [
bug_data
for bug_data in info[person]
if bug_data["id"] not in added_bug_ids
]
added_bug_ids.update(bug_data["id"] for bug_data in info[person])
if person in self.triage_owners_components:
components |= self.triage_owners_components[person]
management_chain |= self.people.get_management_chain_mails(
person, manager, fail_on_missing_mgmt_chain
)
if components:
query_url = self.get_query_url_for_components(sorted(components))
else:
query_url = None
body = template.render(
date=self.nag_date,
extra=extra,
plural=utils.plural,
enumerate=enumerate,
data=self.organize_nag(data),
nag=True,
query_url_nag=utils.shorten_long_bz_url(query_url),
table_attrs=self.get_config("table_attrs"),
nag_preamble=self.nag_preamble(),
)
m = {
"manager": manager,
"management_chain": management_chain,
"to": set(To),
"body": body,
}
mails.append(m)
return mails