Skip to content

Notifications

Notifier

Notifier Class

The Notifier class encapsulates the functionality to send email notifications.

Attributes:

Name Type Description
config NotificationSettings

An instance of NotificationSettings

Source code in pi_monitor/notifications.py
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
class Notifier:
    """Notifier Class

    The Notifier class encapsulates the functionality to send email notifications.

    Attributes:
        config: An instance of [NotificationSettings][pi_monitor.NotificationSettings]
    """

    config: NotificationSettings

    def __init__(self, notify_config: NotificationSettings) -> None:
        """Constructor

        Initialize the instance using the provided
        [NotificationSettings][pi_monitor.NotificationSettings].

        """
        self.config = notify_config

    def notify(self, subject: str, content: str) -> bool:
        """Send notification

        Build and send an email notificaiton using the provided parameters.

        Args:
            subject: The email subject.
            content: the email content.

        """

        if self.config is None:
            logger.info("No configuration provided.  Skipping...")
            return True

        if self.config.sms_email is not None and self.config.sms_email != "":
            logger.info("Sending Notification to %s", self.config.sms_email)

            message = Mail(
                from_email=self.config.smtp_sender_id,
                to_emails=self.config.sms_email,
                subject=subject,
                plain_text_content=content,
                html_content=content,
            )
            try:
                sg = SendGridAPIClient(self.config.smtp_sender_apikey)
                response = sg.send(message)
                return response.status_code == 202
            except Exception as e:
                logger.error("Error sending mail: %s", e)
                return False
        else:
            logger.info("No email address provided for notification.  Skipping...")
            return True

__init__(notify_config)

Constructor

Initialize the instance using the provided NotificationSettings.

Source code in pi_monitor/notifications.py
20
21
22
23
24
25
26
27
def __init__(self, notify_config: NotificationSettings) -> None:
    """Constructor

    Initialize the instance using the provided
    [NotificationSettings][pi_monitor.NotificationSettings].

    """
    self.config = notify_config

notify(subject, content)

Send notification

Build and send an email notificaiton using the provided parameters.

Parameters:

Name Type Description Default
subject str

The email subject.

required
content str

the email content.

required
Source code in pi_monitor/notifications.py
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
def notify(self, subject: str, content: str) -> bool:
    """Send notification

    Build and send an email notificaiton using the provided parameters.

    Args:
        subject: The email subject.
        content: the email content.

    """

    if self.config is None:
        logger.info("No configuration provided.  Skipping...")
        return True

    if self.config.sms_email is not None and self.config.sms_email != "":
        logger.info("Sending Notification to %s", self.config.sms_email)

        message = Mail(
            from_email=self.config.smtp_sender_id,
            to_emails=self.config.sms_email,
            subject=subject,
            plain_text_content=content,
            html_content=content,
        )
        try:
            sg = SendGridAPIClient(self.config.smtp_sender_apikey)
            response = sg.send(message)
            return response.status_code == 202
        except Exception as e:
            logger.error("Error sending mail: %s", e)
            return False
    else:
        logger.info("No email address provided for notification.  Skipping...")
        return True