Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix backwards compatibility for SMTP provider #37701

Merged
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
20 changes: 18 additions & 2 deletions airflow/providers/smtp/notifications/smtp.py
Expand Up @@ -25,6 +25,24 @@
from airflow.notifications.basenotifier import BaseNotifier
from airflow.providers.smtp.hooks.smtp import SmtpHook

try:
from airflow.settings import SMTP_DEFAULT_TEMPLATED_HTML_CONTENT_PATH, SMTP_DEFAULT_TEMPLATED_SUBJECT
except ImportError:
# This is a fallback for when the settings are not available - they were only added in 2.8.1,
# so we should be able to remove it when min airflow version for the SMTP provider is 2.9.0
# we do not raise deprecation warning here, because the user might be using 2.8.0 and the new provider
# deliberately, and we do not want to upgrade to newer version of Airflow so we should not raise the
# deprecation warning here. If the user will modify the settings in local_settings even for earlier
# versions of Airflow, they will be properly used as they will be imported above
SMTP_DEFAULT_TEMPLATED_HTML_CONTENT_PATH = (Path(__file__).parent / "templates" / "email.html").as_posix()
SMTP_DEFAULT_TEMPLATED_SUBJECT = """
{% if ti is defined %}
DAG {{ ti.dag_id }} - Task {{ ti.task_id }} - Run ID {{ ti.run_id }} in State {{ ti.state }}
{% elif slas is defined %}
SLA Missed for DAG {{ dag.dag_id }} - Task {{ slas[0].task_id }}
{% endif %}
"""

potiuk marked this conversation as resolved.
Show resolved Hide resolved

class SmtpNotifier(BaseNotifier):
"""
Expand Down Expand Up @@ -82,8 +100,6 @@ def __init__(
*,
template: str | None = None,
):
from airflow.settings import SMTP_DEFAULT_TEMPLATED_HTML_CONTENT_PATH, SMTP_DEFAULT_TEMPLATED_SUBJECT

super().__init__()
self.smtp_conn_id = smtp_conn_id
self.from_email = from_email or conf.get("smtp", "smtp_mail_from")
Expand Down