From 0d92b2e7039b8b855772ff7e988d71e78059a2b3 Mon Sep 17 00:00:00 2001 From: beeankha Date: Wed, 27 Nov 2019 16:20:56 -0500 Subject: [PATCH] Enable approval-related email notifications to send properly --- .../notifications/custom_notification_base.py | 26 ++++++++++++------- awx/main/notifications/email_backend.py | 20 +++++++++++--- 2 files changed, 33 insertions(+), 13 deletions(-) diff --git a/awx/main/notifications/custom_notification_base.py b/awx/main/notifications/custom_notification_base.py index b7038ec867..d7a6ff898e 100644 --- a/awx/main/notifications/custom_notification_base.py +++ b/awx/main/notifications/custom_notification_base.py @@ -6,15 +6,23 @@ class CustomNotificationBase(object): DEFAULT_MSG = "{{ job_friendly_name }} #{{ job.id }} '{{ job.name }}' {{ job.status }}: {{ url }}" DEFAULT_BODY = "{{ job_friendly_name }} #{{ job.id }} had status {{ job.status }}, view details at {{ url }}\n\n{{ job_metadata }}" + DEFAULT_APPROVAL_RUNNING_MSG = "The approval node '{{ approval_node_name }}' needs review. This node can be viewed at: {{ workflow_url }}" + DEFAULT_APPROVAL_RUNNING_BODY = "'{{ approval_node_name }}' needs review. This approval node can be viewed at: {{ workflow_url }}\n\n{{ job_metadata }}" + + DEFAULT_APPROVAL_APPROVED_MSG = "The approval node '{{ approval_node_name }}' was approved. {{ workflow_url }}" + DEFAULT_APPROVAL_APPROVED_BODY = "The approval node '{{ approval_node_name }}' was approved. {{ workflow_url }}\n\n{{ job_metadata }}" + + DEFAULT_APPROVAL_TIMEOUT_MSG = "The approval node '{{ approval_node_name }}' has timed out. {{ workflow_url }}" + DEFAULT_APPROVAL_TIMEOUT_BODY = "The approval node '{{ approval_node_name }}' has timed out. {{ workflow_url }}\n\n{{ job_metadata }}" + + DEFAULT_APPROVAL_DENIED_MSG = "The approval node '{{ approval_node_name }}' was denied. {{ workflow_url }}" + DEFAULT_APPROVAL_DENIED_BODY = "The approval node '{{ approval_node_name }}' was denied. {{ workflow_url }}\n\n{{ job_metadata }}" + + default_messages = {"started": {"message": DEFAULT_MSG, "body": None}, "success": {"message": DEFAULT_MSG, "body": None}, "error": {"message": DEFAULT_MSG, "body": None}, - "workflow_approval": {"running": {"message": 'The approval node "{{ approval_node_name }}" needs review. ' - 'This node can be viewed at: {{ workflow_url }}', - "body": None}, - "approved": {"message": 'The approval node "{{ approval_node_name }}" was approved. {{ workflow_url }}', - "body": None}, - "timed_out": {"message": 'The approval node "{{ approval_node_name }}" has timed out. {{ workflow_url }}', - "body": None}, - "denied": {"message": 'The approval node "{{ approval_node_name }}" was denied. {{ workflow_url }}', - "body": None}}} + "workflow_approval": {"running": {"message": DEFAULT_APPROVAL_RUNNING_MSG, "body": None}, + "approved": {"message": DEFAULT_APPROVAL_APPROVED_MSG, "body": None}, + "timed_out": {"message": DEFAULT_APPROVAL_TIMEOUT_MSG, "body": None}, + "denied": {"message": DEFAULT_APPROVAL_DENIED_MSG, "body": None}}} diff --git a/awx/main/notifications/email_backend.py b/awx/main/notifications/email_backend.py index 2b9c7d8d58..657b18d282 100644 --- a/awx/main/notifications/email_backend.py +++ b/awx/main/notifications/email_backend.py @@ -8,6 +8,18 @@ from awx.main.notifications.custom_notification_base import CustomNotificationBa DEFAULT_MSG = CustomNotificationBase.DEFAULT_MSG DEFAULT_BODY = CustomNotificationBase.DEFAULT_BODY +DEFAULT_APPROVAL_RUNNING_MSG = CustomNotificationBase.DEFAULT_APPROVAL_RUNNING_MSG +DEFAULT_APPROVAL_RUNNING_BODY = CustomNotificationBase.DEFAULT_APPROVAL_RUNNING_BODY + +DEFAULT_APPROVAL_APPROVED_MSG = CustomNotificationBase.DEFAULT_APPROVAL_APPROVED_MSG +DEFAULT_APPROVAL_APPROVED_BODY = CustomNotificationBase.DEFAULT_APPROVAL_APPROVED_BODY + +DEFAULT_APPROVAL_TIMEOUT_MSG = CustomNotificationBase.DEFAULT_APPROVAL_TIMEOUT_MSG +DEFAULT_APPROVAL_TIMEOUT_BODY = CustomNotificationBase.DEFAULT_APPROVAL_TIMEOUT_BODY + +DEFAULT_APPROVAL_DENIED_MSG = CustomNotificationBase.DEFAULT_APPROVAL_DENIED_MSG +DEFAULT_APPROVAL_DENIED_BODY = CustomNotificationBase.DEFAULT_APPROVAL_DENIED_BODY + class CustomEmailBackend(EmailBackend, CustomNotificationBase): @@ -26,10 +38,10 @@ class CustomEmailBackend(EmailBackend, CustomNotificationBase): default_messages = {"started": {"message": DEFAULT_MSG, "body": DEFAULT_BODY}, "success": {"message": DEFAULT_MSG, "body": DEFAULT_BODY}, "error": {"message": DEFAULT_MSG, "body": DEFAULT_BODY}, - "workflow_approval": {"running": {"message": DEFAULT_MSG, "body": DEFAULT_BODY}, - "approved": {"message": DEFAULT_MSG, "body": DEFAULT_BODY}, - "timed_out": {"message": DEFAULT_MSG, "body": DEFAULT_BODY}, - "denied": {"message": DEFAULT_MSG, "body": DEFAULT_BODY}}} + "workflow_approval": {"running": {"message": DEFAULT_APPROVAL_RUNNING_MSG, "body": DEFAULT_APPROVAL_RUNNING_BODY}, + "approved": {"message": DEFAULT_APPROVAL_APPROVED_MSG, "body": DEFAULT_APPROVAL_APPROVED_BODY}, + "timed_out": {"message": DEFAULT_APPROVAL_TIMEOUT_MSG, "body": DEFAULT_APPROVAL_TIMEOUT_BODY}, + "denied": {"message": DEFAULT_APPROVAL_DENIED_MSG, "body": DEFAULT_APPROVAL_DENIED_BODY}}} def format_body(self, body): # leave body unchanged (expect a string)