From 7bf250ecfa9a10ceed2f29121a9c240f59f7e009 Mon Sep 17 00:00:00 2001 From: Jim Ladd Date: Wed, 14 Aug 2019 10:33:24 -0700 Subject: [PATCH] show default messages in options --- awx/api/metadata.py | 11 +++++++++++ awx/main/notifications/email_backend.py | 6 ++++++ awx/main/notifications/grafana_backend.py | 5 +++++ awx/main/notifications/hipchat_backend.py | 5 +++++ awx/main/notifications/irc_backend.py | 5 +++++ awx/main/notifications/mattermost_backend.py | 5 +++++ awx/main/notifications/pagerduty_backend.py | 6 ++++++ awx/main/notifications/rocketchat_backend.py | 5 +++++ awx/main/notifications/slack_backend.py | 5 +++++ awx/main/notifications/twilio_backend.py | 5 +++++ awx/main/notifications/webhook_backend.py | 5 +++++ 11 files changed, 63 insertions(+) diff --git a/awx/api/metadata.py b/awx/api/metadata.py index cc44e6d0e9..bdc00796eb 100644 --- a/awx/api/metadata.py +++ b/awx/api/metadata.py @@ -114,6 +114,17 @@ class Metadata(metadata.SimpleMetadata): for (notification_type_name, notification_tr_name, notification_type_class) in NotificationTemplate.NOTIFICATION_TYPES: field_info[notification_type_name] = notification_type_class.init_parameters + # Special handling of notification messages where the required properties + # are conditional on the type selected. + try: + view_model = field.context['view'].model + except (AttributeError, KeyError): + view_model = None + if view_model == NotificationTemplate and field.field_name == 'messages': + for (notification_type_name, notification_tr_name, notification_type_class) in NotificationTemplate.NOTIFICATION_TYPES: + field_info[notification_type_name] = notification_type_class.default_messages + + # Update type of fields returned... if field.field_name == 'type': field_info['type'] = 'choice' diff --git a/awx/main/notifications/email_backend.py b/awx/main/notifications/email_backend.py index 1b30b344bb..8abce4fff1 100644 --- a/awx/main/notifications/email_backend.py +++ b/awx/main/notifications/email_backend.py @@ -19,6 +19,12 @@ class CustomEmailBackend(EmailBackend): "sender": {"label": "Sender Email", "type": "string"}, "recipients": {"label": "Recipient List", "type": "list"}, "timeout": {"label": "Timeout", "type": "int", "default": 30}} + + DEFAULT_SUBJECT = "{{ job_friendly_name }} #{{ job.id }} '{{ job.name }}' {{ job.status }}: {{ url }}" + DEFAULT_BODY = smart_text(_("{{ job_friendly_name }} #{{ job.id }} had status {{ job.status }}, view details at {{ url }}\n\n{{ job_summary_dict }}")) + default_messages = {"started": {"message": DEFAULT_SUBJECT, "body": DEFAULT_BODY}, + "success": {"message": DEFAULT_SUBJECT, "body": DEFAULT_BODY}, + "error": {"message": DEFAULT_SUBJECT, "body": DEFAULT_BODY}} recipient_parameter = "recipients" sender_parameter = "sender" diff --git a/awx/main/notifications/grafana_backend.py b/awx/main/notifications/grafana_backend.py index 0044a1b098..ccd176e4f4 100644 --- a/awx/main/notifications/grafana_backend.py +++ b/awx/main/notifications/grafana_backend.py @@ -21,6 +21,11 @@ class GrafanaBackend(AWXBaseEmailBackend): recipient_parameter = "grafana_url" sender_parameter = None + DEFAULT_SUBJECT = "{{ job_friendly_name }} #{{ job.id }} '{{ job.name }}' {{ job.status }}: {{ url }}" + default_messages = {"started": {"message": DEFAULT_SUBJECT}, + "success": {"message": DEFAULT_SUBJECT}, + "error": {"message": DEFAULT_SUBJECT}} + def __init__(self, grafana_key,dashboardId=None, panelId=None, annotation_tags=None, grafana_no_verify_ssl=False, isRegion=True, fail_silently=False, **kwargs): super(GrafanaBackend, self).__init__(fail_silently=fail_silently) diff --git a/awx/main/notifications/hipchat_backend.py b/awx/main/notifications/hipchat_backend.py index 3d7505351b..0fa53b4471 100644 --- a/awx/main/notifications/hipchat_backend.py +++ b/awx/main/notifications/hipchat_backend.py @@ -23,6 +23,11 @@ class HipChatBackend(AWXBaseEmailBackend): recipient_parameter = "rooms" sender_parameter = "message_from" + DEFAULT_SUBJECT = "{{ job_friendly_name }} #{{ job.id }} '{{ job.name }}' {{ job.status }}: {{ url }}" + default_messages = {"started": {"message": DEFAULT_SUBJECT}, + "success": {"message": DEFAULT_SUBJECT}, + "error": {"message": DEFAULT_SUBJECT}} + def __init__(self, token, color, api_url, notify, fail_silently=False, **kwargs): super(HipChatBackend, self).__init__(fail_silently=fail_silently) self.token = token diff --git a/awx/main/notifications/irc_backend.py b/awx/main/notifications/irc_backend.py index 2493451e77..037293a0d3 100644 --- a/awx/main/notifications/irc_backend.py +++ b/awx/main/notifications/irc_backend.py @@ -25,6 +25,11 @@ class IrcBackend(AWXBaseEmailBackend): recipient_parameter = "targets" sender_parameter = None + DEFAULT_SUBJECT = "{{ job_friendly_name }} #{{ job.id }} '{{ job.name }}' {{ job.status }}: {{ url }}" + default_messages = {"started": {"message": DEFAULT_SUBJECT}, + "success": {"message": DEFAULT_SUBJECT}, + "error": {"message": DEFAULT_SUBJECT}} + def __init__(self, server, port, nickname, password, use_ssl, fail_silently=False, **kwargs): super(IrcBackend, self).__init__(fail_silently=fail_silently) self.server = server diff --git a/awx/main/notifications/mattermost_backend.py b/awx/main/notifications/mattermost_backend.py index 8d8755f9bf..41b3c4caa4 100644 --- a/awx/main/notifications/mattermost_backend.py +++ b/awx/main/notifications/mattermost_backend.py @@ -19,6 +19,11 @@ class MattermostBackend(AWXBaseEmailBackend): recipient_parameter = "mattermost_url" sender_parameter = None + DEFAULT_SUBJECT = "{{ job_friendly_name }} #{{ job.id }} '{{ job.name }}' {{ job.status }}: {{ url }}" + default_messages = {"started": {"message": DEFAULT_SUBJECT}, + "success": {"message": DEFAULT_SUBJECT}, + "error": {"message": DEFAULT_SUBJECT}} + def __init__(self, mattermost_no_verify_ssl=False, mattermost_channel=None, mattermost_username=None, mattermost_icon_url=None, fail_silently=False, **kwargs): super(MattermostBackend, self).__init__(fail_silently=fail_silently) diff --git a/awx/main/notifications/pagerduty_backend.py b/awx/main/notifications/pagerduty_backend.py index 21eb2a9aae..55827a67de 100644 --- a/awx/main/notifications/pagerduty_backend.py +++ b/awx/main/notifications/pagerduty_backend.py @@ -20,6 +20,12 @@ class PagerDutyBackend(AWXBaseEmailBackend): recipient_parameter = "service_key" sender_parameter = "client_name" + DEFAULT_SUBJECT = "{{ job_friendly_name }} #{{ job.id }} '{{ job.name }}' {{ job.status }}: {{ url }}" + DEFAULT_BODY = "{{ job_summary_dict }}" + default_messages = {"started": { "message": DEFAULT_SUBJECT, "body": DEFAULT_BODY}, + "success": { "message": DEFAULT_SUBJECT, "body": DEFAULT_BODY}, + "error": { "message": DEFAULT_SUBJECT, "body": DEFAULT_BODY}} + def __init__(self, subdomain, token, fail_silently=False, **kwargs): super(PagerDutyBackend, self).__init__(fail_silently=fail_silently) self.subdomain = subdomain diff --git a/awx/main/notifications/rocketchat_backend.py b/awx/main/notifications/rocketchat_backend.py index c7fe84f0b2..e211708a8c 100644 --- a/awx/main/notifications/rocketchat_backend.py +++ b/awx/main/notifications/rocketchat_backend.py @@ -19,6 +19,11 @@ class RocketChatBackend(AWXBaseEmailBackend): recipient_parameter = "rocketchat_url" sender_parameter = None + DEFAULT_SUBJECT = "{{ job_friendly_name }} #{{ job.id }} '{{ job.name }}' {{ job.status }}: {{ url }}" + default_messages = {"started": {"message": DEFAULT_SUBJECT}, + "success": {"message": DEFAULT_SUBJECT}, + "error": {"message": DEFAULT_SUBJECT}} + def __init__(self, rocketchat_no_verify_ssl=False, rocketchat_username=None, rocketchat_icon_url=None, fail_silently=False, **kwargs): super(RocketChatBackend, self).__init__(fail_silently=fail_silently) self.rocketchat_no_verify_ssl = rocketchat_no_verify_ssl diff --git a/awx/main/notifications/slack_backend.py b/awx/main/notifications/slack_backend.py index a78c2c4aeb..983fb73cf5 100644 --- a/awx/main/notifications/slack_backend.py +++ b/awx/main/notifications/slack_backend.py @@ -19,6 +19,11 @@ class SlackBackend(AWXBaseEmailBackend): recipient_parameter = "channels" sender_parameter = None + DEFAULT_SUBJECT = "{{ job_friendly_name }} #{{ job.id }} '{{ job.name }}' {{ job.status }}: {{ url }}" + default_messages = {"started": {"message": DEFAULT_SUBJECT}, + "success": {"message": DEFAULT_SUBJECT}, + "error": {"message": DEFAULT_SUBJECT}} + def __init__(self, token, hex_color="", fail_silently=False, **kwargs): super(SlackBackend, self).__init__(fail_silently=fail_silently) self.token = token diff --git a/awx/main/notifications/twilio_backend.py b/awx/main/notifications/twilio_backend.py index 077ef7573b..21e98e6882 100644 --- a/awx/main/notifications/twilio_backend.py +++ b/awx/main/notifications/twilio_backend.py @@ -21,6 +21,11 @@ class TwilioBackend(AWXBaseEmailBackend): recipient_parameter = "to_numbers" sender_parameter = "from_number" + DEFAULT_SUBJECT = "{{ job_friendly_name }} #{{ job.id }} '{{ job.name }}' {{ job.status }}: {{ url }}" + default_messages = {"started": {"message": DEFAULT_SUBJECT}, + "success": {"message": DEFAULT_SUBJECT}, + "error": {"message": DEFAULT_SUBJECT}} + def __init__(self, account_sid, account_token, fail_silently=False, **kwargs): super(TwilioBackend, self).__init__(fail_silently=fail_silently) self.account_sid = account_sid diff --git a/awx/main/notifications/webhook_backend.py b/awx/main/notifications/webhook_backend.py index 91a6f15118..1f29fe8bca 100644 --- a/awx/main/notifications/webhook_backend.py +++ b/awx/main/notifications/webhook_backend.py @@ -23,6 +23,11 @@ class WebhookBackend(AWXBaseEmailBackend): recipient_parameter = "url" sender_parameter = None + DEFAULT_BODY = "{{ job_summary_dict }}" + default_messages = {"started": {"body": DEFAULT_BODY}, + "success": {"body": DEFAULT_BODY}, + "error": {"body": DEFAULT_BODY}} + def __init__(self, http_method, headers, disable_ssl_verification=False, fail_silently=False, username=None, password=None, **kwargs): self.http_method = http_method self.disable_ssl_verification = disable_ssl_verification