Fixes #15812: Add Date(Time)Var for scripts to allow much easier date… (#15821)

* Fixes #15812: Add Date(Time)Var for scripts to allow much easier date input

* Extend tests for invalid data

---------

Co-authored-by: Jeremy Stretch <jstretch@netboxlabs.com>
This commit is contained in:
JCWasmx86
2024-04-29 18:46:39 +02:00
committed by GitHub
parent 9691bb29b6
commit 3cbade536e
3 changed files with 78 additions and 0 deletions

View File

@@ -24,6 +24,7 @@ from ipam.validators import MaxPrefixLengthValidator, MinPrefixLengthValidator,
from utilities.exceptions import AbortScript, AbortTransaction
from utilities.forms import add_blank_choice
from utilities.forms.fields import DynamicModelChoiceField, DynamicModelMultipleChoiceField
from utilities.forms.widgets import DatePicker, DateTimePicker
from .context_managers import event_tracking
from .forms import ScriptForm
@@ -31,6 +32,8 @@ __all__ = (
'BaseScript',
'BooleanVar',
'ChoiceVar',
'DateVar',
'DateTimeVar',
'FileVar',
'IntegerVar',
'IPAddressVar',
@@ -172,6 +175,28 @@ class ChoiceVar(ScriptVariable):
self.field_attrs['choices'] = add_blank_choice(choices)
class DateVar(ScriptVariable):
"""
A date.
"""
form_field = forms.DateField
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.form_field.widget = DatePicker()
class DateTimeVar(ScriptVariable):
"""
A date and a time.
"""
form_field = forms.DateTimeField
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.form_field.widget = DateTimePicker()
class MultiChoiceVar(ScriptVariable):
"""
Like ChoiceVar, but allows for the selection of multiple choices.