From 3c3cca8ec1bcbee8acdc14bca9813a98bf11bfca Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Tue, 11 Feb 2020 20:12:02 -0600 Subject: [PATCH 1/2] Enable widget usage (APISelect, APIMultipleSelect, StaticSelect2, etc) in scripts --- netbox/extras/scripts.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/netbox/extras/scripts.py b/netbox/extras/scripts.py index 6567fe707..b0e12ffcb 100644 --- a/netbox/extras/scripts.py +++ b/netbox/extras/scripts.py @@ -48,7 +48,7 @@ class ScriptVariable: """ form_field = forms.CharField - def __init__(self, label='', description='', default=None, required=True): + def __init__(self, label='', description='', default=None, required=True, widget=None): # Initialize field attributes if not hasattr(self, 'field_attrs'): @@ -59,6 +59,8 @@ class ScriptVariable: self.field_attrs['help_text'] = description if default: self.field_attrs['initial'] = default + if widget: + self.field_attrs['widget'] = widget self.field_attrs['required'] = required # Initialize the list of optional validators if none have already been defined @@ -71,7 +73,10 @@ class ScriptVariable: """ form_field = self.form_field(**self.field_attrs) if not isinstance(form_field.widget, forms.CheckboxInput): - form_field.widget.attrs['class'] = 'form-control' + if form_field.widget.attrs and form_field.widget.attrs['class']: + form_field.widget.attrs['class'] += ' form-control' + else: + form_field.widget.attrs['class'] = 'form-control' return form_field From 56bb053146bafb3fd610693b1d4ba40d30f79b98 Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Tue, 11 Feb 2020 20:27:02 -0600 Subject: [PATCH 2/2] Fix test error --- netbox/extras/scripts.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netbox/extras/scripts.py b/netbox/extras/scripts.py index b0e12ffcb..e5a32bde6 100644 --- a/netbox/extras/scripts.py +++ b/netbox/extras/scripts.py @@ -73,7 +73,7 @@ class ScriptVariable: """ form_field = self.form_field(**self.field_attrs) if not isinstance(form_field.widget, forms.CheckboxInput): - if form_field.widget.attrs and form_field.widget.attrs['class']: + if form_field.widget.attrs and 'class' in form_field.widget.attrs.keys(): form_field.widget.attrs['class'] += ' form-control' else: form_field.widget.attrs['class'] = 'form-control'