mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Merge branch 'develop' into develop-2.9
This commit is contained in:
@@ -34,6 +34,7 @@ __all__ = [
|
||||
'IPAddressVar',
|
||||
'IPAddressWithMaskVar',
|
||||
'IPNetworkVar',
|
||||
'MultiChoiceVar',
|
||||
'MultiObjectVar',
|
||||
'ObjectVar',
|
||||
'Script',
|
||||
@@ -167,6 +168,13 @@ class ChoiceVar(ScriptVariable):
|
||||
self.field_attrs['choices'] = choices
|
||||
|
||||
|
||||
class MultiChoiceVar(ChoiceVar):
|
||||
"""
|
||||
Like ChoiceVar, but allows for the selection of multiple choices.
|
||||
"""
|
||||
form_field = forms.MultipleChoiceField
|
||||
|
||||
|
||||
class ObjectVar(ScriptVariable):
|
||||
"""
|
||||
A single object within NetBox.
|
||||
|
@@ -5,6 +5,12 @@ from netaddr import IPAddress, IPNetwork
|
||||
from dcim.models import DeviceRole
|
||||
from extras.scripts import *
|
||||
|
||||
CHOICES = (
|
||||
('ff0000', 'Red'),
|
||||
('00ff00', 'Green'),
|
||||
('0000ff', 'Blue')
|
||||
)
|
||||
|
||||
|
||||
class ScriptVariablesTest(TestCase):
|
||||
|
||||
@@ -101,12 +107,6 @@ class ScriptVariablesTest(TestCase):
|
||||
|
||||
def test_choicevar(self):
|
||||
|
||||
CHOICES = (
|
||||
('ff0000', 'Red'),
|
||||
('00ff00', 'Green'),
|
||||
('0000ff', 'Blue')
|
||||
)
|
||||
|
||||
class TestScript(Script):
|
||||
|
||||
var1 = ChoiceVar(
|
||||
@@ -114,12 +114,37 @@ class ScriptVariablesTest(TestCase):
|
||||
)
|
||||
|
||||
# Validate valid choice
|
||||
data = {'var1': CHOICES[0][0]}
|
||||
data = {'var1': 'ff0000'}
|
||||
form = TestScript().as_form(data)
|
||||
self.assertTrue(form.is_valid())
|
||||
self.assertEqual(form.cleaned_data['var1'], CHOICES[0][0])
|
||||
self.assertEqual(form.cleaned_data['var1'], 'ff0000')
|
||||
|
||||
# Validate invalid choices
|
||||
# Validate invalid choice
|
||||
data = {'var1': 'taupe'}
|
||||
form = TestScript().as_form(data)
|
||||
self.assertFalse(form.is_valid())
|
||||
|
||||
def test_multichoicevar(self):
|
||||
|
||||
class TestScript(Script):
|
||||
|
||||
var1 = MultiChoiceVar(
|
||||
choices=CHOICES
|
||||
)
|
||||
|
||||
# Validate single choice
|
||||
data = {'var1': ['ff0000']}
|
||||
form = TestScript().as_form(data)
|
||||
self.assertTrue(form.is_valid())
|
||||
self.assertEqual(form.cleaned_data['var1'], ['ff0000'])
|
||||
|
||||
# Validate multiple choices
|
||||
data = {'var1': ('ff0000', '00ff00')}
|
||||
form = TestScript().as_form(data)
|
||||
self.assertTrue(form.is_valid())
|
||||
self.assertEqual(form.cleaned_data['var1'], ['ff0000', '00ff00'])
|
||||
|
||||
# Validate invalid choice
|
||||
data = {'var1': 'taupe'}
|
||||
form = TestScript().as_form(data)
|
||||
self.assertFalse(form.is_valid())
|
||||
|
Reference in New Issue
Block a user