diff --git a/awx/main/notifications/custom_notification_base.py b/awx/main/notifications/custom_notification_base.py index b7038ec867..f8da2dab52 100644 --- a/awx/main/notifications/custom_notification_base.py +++ b/awx/main/notifications/custom_notification_base.py @@ -6,15 +6,24 @@ 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 = ('The approval node "{{ 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)