1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

#8366: Misc cleanup

This commit is contained in:
jeremystretch
2022-12-12 15:27:37 -05:00
parent ad78f9e075
commit 758030733c
5 changed files with 54 additions and 23 deletions

View File

@ -2,7 +2,7 @@ from django import forms
from django.utils import timezone
from django.utils.translation import gettext as _
from utilities.forms import BootstrapMixin, DateTimePicker
from utilities.forms import BootstrapMixin, DateTimePicker, SelectDurationWidget
__all__ = (
'ReportForm',
@ -20,6 +20,7 @@ class ReportForm(BootstrapMixin, forms.Form):
required=False,
min_value=1,
label=_("Recurs every"),
widget=SelectDurationWidget(),
help_text=_("Interval at which this report is re-run (in minutes)")
)
@ -29,3 +30,10 @@ class ReportForm(BootstrapMixin, forms.Form):
raise forms.ValidationError(_('Scheduled time must be in the future.'))
return scheduled_time
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# Annotate the current system time for reference
now = timezone.now().strftime('%Y-%m-%d %H:%M:%S')
self.fields['schedule_at'].help_text += f' (current time: <strong>{now}</strong>)'

View File

@ -2,7 +2,7 @@ from django import forms
from django.utils import timezone
from django.utils.translation import gettext as _
from utilities.forms import BootstrapMixin, DateTimePicker
from utilities.forms import BootstrapMixin, DateTimePicker, SelectDurationWidget
__all__ = (
'ScriptForm',
@ -26,12 +26,17 @@ class ScriptForm(BootstrapMixin, forms.Form):
required=False,
min_value=1,
label=_("Recurs every"),
widget=SelectDurationWidget(),
help_text=_("Interval at which this script is re-run (in minutes)")
)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# Annotate the current system time for reference
now = timezone.now().strftime('%Y-%m-%d %H:%M:%S')
self.fields['_schedule_at'].help_text += f' (current time: <strong>{now}</strong>)'
# Move _commit and _schedule_at to the end of the form
schedule_at = self.fields.pop('_schedule_at')
interval = self.fields.pop('_interval')

View File

@ -51,7 +51,6 @@
</form>
</div>
</div>
{% endif %}
<div class="row">
<div class="col col-md-12">

View File

@ -17,6 +17,7 @@ __all__ = (
'DatePicker',
'DateTimePicker',
'NumericArrayField',
'SelectDurationWidget',
'SelectSpeedWidget',
'SelectWithPK',
'SlugWidget',
@ -108,6 +109,13 @@ class SelectSpeedWidget(forms.NumberInput):
template_name = 'widgets/select_speed.html'
class SelectDurationWidget(forms.NumberInput):
"""
Dropdown to select one of several common options for a time duration (in minutes).
"""
template_name = 'widgets/select_duration.html'
class NumericArrayField(SimpleArrayField):
def clean(self, value):

View File

@ -0,0 +1,11 @@
<div class="input-group">
{% include 'django/forms/widgets/number.html' %}
<button type="button" class="btn btn-outline-dark border-input dropdown-toggle" data-bs-toggle="dropdown"></button>
<ul class="dropdown-menu dropdown-menu-end">
<li><a href="#" target="id_{{ widget.name }}" data="60" class="set_speed dropdown-item">Hourly</a></li>
<li><a href="#" target="id_{{ widget.name }}" data="720" class="set_speed dropdown-item">12 hours</a></li>
<li><a href="#" target="id_{{ widget.name }}" data="1440" class="set_speed dropdown-item">Daily</a></li>
<li><a href="#" target="id_{{ widget.name }}" data="10080" class="set_speed dropdown-item">Weekly</a></li>
<li><a href="#" target="id_{{ widget.name }}" data="43200" class="set_speed dropdown-item">30 days</a></li>
</ul>
</div>