Skip to content

Commit

Permalink
Notify all involved triagers when changing triage owners (#2389)
Browse files Browse the repository at this point in the history
  • Loading branch information
benjaminmah committed May 10, 2024
1 parent 59deb68 commit 283089a
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 2 deletions.
6 changes: 6 additions & 0 deletions bugbot/bzcleaner.py
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,9 @@ def get_data(self):
def get_summary(self, bug):
return "..." if bug["groups"] else bug["summary"]

def get_cc_emails(self, data):
return []

def has_default_products(self):
return True

Expand Down Expand Up @@ -764,13 +767,16 @@ def send_email(self, date="today"):
if data:
title, body = self.get_email(date, data)
receivers = utils.get_receivers(self.name())
cc_list = self.get_cc_emails(data)

status = "Success"
try:
mail.send(
login_info["ldap_username"],
receivers,
title,
body,
Cc=cc_list,
html=True,
login=login_info,
dryrun=self.dryrun,
Expand Down
11 changes: 11 additions & 0 deletions bugbot/rules/triage_owner_rotations.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
from bugbot import logger
from bugbot.bzcleaner import BzCleaner
from bugbot.component_triagers import ComponentName, ComponentTriagers, TriageOwner
from bugbot.utils import get_bug_bugdash_url


class TriageOwnerRotations(BzCleaner):
Expand Down Expand Up @@ -95,10 +96,20 @@ def get_email_data(self, date: str) -> List[dict]:
),
"new_triage_owner": new_triager.bugzilla_email,
"has_put_error": new_triager.component in failures,
"link_to_triage": get_bug_bugdash_url(
new_triager.component, tab_name="triage"
),
}
for new_triager in new_triagers
]

def get_cc_emails(self, data: List[dict]) -> List[str]:
cc_emails = set()
for entry in data:
cc_emails.add(entry.get("old_triage_owner", ""))
cc_emails.add(entry.get("new_triage_owner", ""))
return list(cc_emails)


if __name__ == "__main__":
TriageOwnerRotations().run()
19 changes: 18 additions & 1 deletion bugbot/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import random
import re
from typing import Iterable, Union
from urllib.parse import urlencode
from urllib.parse import quote_plus, urlencode

import dateutil.parser
import humanize
Expand Down Expand Up @@ -765,3 +765,20 @@ def is_keywords_removed_by_bugbot(bug: dict, keywords: Iterable) -> bool:
if change["field_name"] == "keywords"
for keyword in keywords
)


def get_bug_bugdash_url(component, tab_name: str) -> str:
"""
Generate bugdash URL for a component.
Args:
component: The name of the targeted component.
tab_name: The name of the tab that should be active.
Returns:
A URL pointing to Bugdash based on the provided component and tab.
"""
# Bugdash uses a single colon instead of a double colon to prefix the product name.
encoded_component = quote_plus(f"{component.product}:{component.name}")

return f"https://bugdash.moz.tools/?component={encoded_component}#tab.{tab_name}"
4 changes: 3 additions & 1 deletion templates/triage_owner_rotations.html
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@
<tbody>
{% for i, row in enumerate(data) -%}
<tr {%- if row['has_put_error'] %} bgcolor="#FFB8B8"{% elif i % 2 == 0 %} bgcolor="#E0E0E0"{% endif -%}>
<td>{{ row['component'] }}</td>
<td>
<a href="{{ row['link_to_triage'] }}">{{ row['component'] }}</a>
</td>
<td>{{ row['old_triage_owner'] }}</td>
<td>{{ row['new_triage_owner'] }}</td>
</tr>
Expand Down

0 comments on commit 283089a

Please sign in to comment.