Skip to content

Commit

Permalink
Remove json serialization for notify validation (#14847)
Browse files Browse the repository at this point in the history
* Remove json serialization for notify validation

* Update serializers.py
  • Loading branch information
dmzoneill authored Feb 12, 2024
1 parent 519fd22 commit 56b6a07
Showing 1 changed file with 15 additions and 10 deletions.
25 changes: 15 additions & 10 deletions awx/api/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -5177,16 +5177,21 @@ def __init__(self, *args, **kwargs):
body = messages[event].get('body', {})
if body:
try:
rendered_body = (
sandbox.ImmutableSandboxedEnvironment(undefined=DescriptiveUndefined).from_string(body).render(JobNotificationMixin.context_stub())
)
potential_body = json.loads(rendered_body)
if not isinstance(potential_body, dict):
error_list.append(
_("Webhook body for '{}' should be a json dictionary. Found type '{}'.".format(event, type(potential_body).__name__))
)
except json.JSONDecodeError as exc:
error_list.append(_("Webhook body for '{}' is not a valid json dictionary ({}).".format(event, exc)))
sandbox.ImmutableSandboxedEnvironment(undefined=DescriptiveUndefined).from_string(body).render(JobNotificationMixin.context_stub())

# https://github.com/ansible/awx/issues/14410

# When rendering something such as "{{ job.id }}"
# the return type is not a dict, unlike "{{ job_metadata }}" which is a dict

# potential_body = json.loads(rendered_body)

# if not isinstance(potential_body, dict):
# error_list.append(
# _("Webhook body for '{}' should be a json dictionary. Found type '{}'.".format(event, type(potential_body).__name__))
# )
except Exception as exc:
error_list.append(_("Webhook body for '{}' is not valid. The following gave an error ({}).".format(event, exc)))

if error_list:
raise serializers.ValidationError(error_list)
Expand Down

0 comments on commit 56b6a07

Please # to comment.