diff --git a/docs/additional-features/webhooks.md b/docs/additional-features/webhooks.md index ebbff8f62..310e67bf5 100644 --- a/docs/additional-features/webhooks.md +++ b/docs/additional-features/webhooks.md @@ -42,7 +42,7 @@ The following data is available as context for Jinja2 templates: ### Default Request Body -If no body template is specified, and the HTTP content type is `application/json`, the request body will be populated with a JSON object containing the context data. For example, a newly created site might appear as follows: +If no body template is specified, the request body will be populated with a JSON object containing the context data. For example, a newly created site might appear as follows: ```no-highlight { diff --git a/netbox/extras/admin.py b/netbox/extras/admin.py index 7122f3842..f66cc248f 100644 --- a/netbox/extras/admin.py +++ b/netbox/extras/admin.py @@ -58,7 +58,7 @@ class WebhookAdmin(admin.ModelAdmin): }), ('HTTP Request', { 'fields': ( - 'http_method', 'payload_url', 'http_content_type', 'additional_headers', 'body_template', 'secret', + 'payload_url', 'http_method', 'http_content_type', 'additional_headers', 'body_template', 'secret', ) }), ('SSL', { diff --git a/netbox/extras/models.py b/netbox/extras/models.py index eaeface6b..d81fbeab9 100644 --- a/netbox/extras/models.py +++ b/netbox/extras/models.py @@ -106,10 +106,9 @@ class Webhook(models.Model): ) body_template = models.TextField( blank=True, - help_text='Jinja2 template for a custom request body. If blank, a JSON object or form data representing the ' - 'change will be included. Available context data includes: event, ' - 'timestamp, model, username, request_id, and ' - 'data.' + help_text='Jinja2 template for a custom request body. If blank, a JSON object representing the change will be ' + 'included. Available context data includes: event, model, ' + 'timestamp, username, request_id, and data.' ) secret = models.CharField( max_length=255, @@ -165,12 +164,13 @@ class Webhook(models.Model): return ret def render_body(self, context): + """ + Render the body template, if defined. Otherwise, jump the context as a JSON object. + """ if self.body_template: return render_jinja2(self.body_template, context) - elif self.http_content_type == HTTP_CONTENT_TYPE_JSON: - return json.dumps(context, cls=JSONEncoder) else: - return context + return json.dumps(context, cls=JSONEncoder) #