From 488f0c54274d8e83ff1f380ab13341c6615ef2ae Mon Sep 17 00:00:00 2001 From: Arthur Date: Fri, 17 Nov 2023 11:28:08 -0800 Subject: [PATCH] 14132 fix JSON field issue --- netbox/extras/forms/model_forms.py | 12 ++++++++++-- netbox/utilities/forms/fields/fields.py | 2 ++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/netbox/extras/forms/model_forms.py b/netbox/extras/forms/model_forms.py index 7b9f0bb02..98e1bbc85 100644 --- a/netbox/extras/forms/model_forms.py +++ b/netbox/extras/forms/model_forms.py @@ -244,6 +244,14 @@ class EventRuleForm(NetBoxModelForm): label=_('Action choice'), choices=[] ) + conditions = JSONField( + required=False, + help_text=_('Enter conditions in JSON format.') + ) + action_data = JSONField( + required=False, + help_text=_('Enter parameters to pass to the action in JSON format.') + ) fieldsets = ( (_('EventRule'), ('name', 'description', 'content_types', 'enabled', 'tags')), @@ -268,8 +276,6 @@ class EventRuleForm(NetBoxModelForm): 'action_object_type': forms.HiddenInput, 'action_object_id': forms.HiddenInput, 'action_parameters': forms.HiddenInput, - 'conditions': forms.Textarea(attrs={'class': 'font-monospace'}), - 'action_data': forms.Textarea(attrs={'class': 'font-monospace'}), } def get_script_choices(self): @@ -311,6 +317,8 @@ class EventRuleForm(NetBoxModelForm): elif action_type == EventRuleActionChoices.SCRIPT: self.get_script_choices() + val = get_field_value(self, 'conditions') + def clean(self): super().clean() diff --git a/netbox/utilities/forms/fields/fields.py b/netbox/utilities/forms/fields/fields.py index db5e4a30d..b9da5d045 100644 --- a/netbox/utilities/forms/fields/fields.py +++ b/netbox/utilities/forms/fields/fields.py @@ -101,6 +101,8 @@ class JSONField(_JSONField): self.widget.attrs['class'] = 'font-monospace' def prepare_value(self, value): + if value == '': + return value if isinstance(value, InvalidJSONInput): return value if value is None: