forms.py 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. from django import forms
  2. from django.urls import reverse_lazy
  3. from django.utils.translation import gettext as _
  4. from extras.choices import DashboardWidgetColorChoices
  5. from netbox.registry import registry
  6. from utilities.forms import BootstrapMixin, add_blank_choice
  7. __all__ = (
  8. 'DashboardWidgetAddForm',
  9. 'DashboardWidgetForm',
  10. )
  11. def get_widget_choices():
  12. return registry['widgets'].items()
  13. class DashboardWidgetForm(BootstrapMixin, forms.Form):
  14. title = forms.CharField(
  15. required=False
  16. )
  17. color = forms.ChoiceField(
  18. choices=add_blank_choice(DashboardWidgetColorChoices),
  19. required=False,
  20. )
  21. class DashboardWidgetAddForm(DashboardWidgetForm):
  22. widget_class = forms.ChoiceField(
  23. choices=get_widget_choices,
  24. widget=forms.Select(
  25. attrs={
  26. 'hx-get': reverse_lazy('extras:dashboardwidget_add'),
  27. 'hx-target': '#widget_add_form',
  28. }
  29. ),
  30. label=_('Widget type')
  31. )
  32. field_order = ('widget_class', 'title', 'color')