Skip to content

Commit 943921d

Browse files
committed
MessageBuilderConfig
* Introduced MessageBuilderConfig to manage alert group subscribers. * Enhanced AlertMessageBuilder to conditionally display subscriber information based on configuration.
1 parent 77e174e commit 943921d

1 file changed

Lines changed: 20 additions & 0 deletions

File tree

  • elementary/monitor/alerts/alert_messages

elementary/monitor/alerts/alert_messages/builder.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
from datetime import timedelta
22
from typing import Any, Dict, List, Literal, Optional, Sequence, Tuple, Union
33

4+
from pydantic import BaseModel
5+
46
from elementary.messages.block_builders import (
57
BoldTextLineBlock,
68
BulletListBlock,
@@ -53,7 +55,14 @@
5355
]
5456

5557

58+
class MessageBuilderConfig(BaseModel):
59+
alert_groups_subscribers: bool = False
60+
61+
5662
class AlertMessageBuilder:
63+
def __init__(self, config: Optional[MessageBuilderConfig] = None):
64+
self.config = config or MessageBuilderConfig()
65+
5766
STATUS_DISPLAYS: Dict[str, str] = {
5867
"fail": "Failure",
5968
"warn": "Warning",
@@ -423,6 +432,17 @@ def _get_alert_list_line(
423432
inlines.append(TextBlock(text="Owners:"))
424433
inlines.append(MentionLineBlock(*owners))
425434

435+
if subscribers := list(set(alert.subscribers)):
436+
if self.config.alert_groups_subscribers:
437+
inlines.append(TextBlock(text="-"))
438+
if len(subscribers) == 1:
439+
inlines.append(TextBlock(text="Subscriber:"))
440+
inlines.append(MentionBlock(user=subscribers.pop()))
441+
else:
442+
subscribers.sort()
443+
inlines.append(TextBlock(text="Subscribers:"))
444+
inlines.append(MentionLineBlock(*subscribers))
445+
426446
if report_link := alert.get_report_link():
427447
inlines.append(TextBlock(text="-"))
428448
inlines.append(LinkBlock(text=report_link.text, url=report_link.url))

0 commit comments

Comments
 (0)