Coverage for extras/dashboard/forms.py: 93%

15 statements  

« prev     ^ index     » next       coverage.py v7.15.2, created at 2026-10-10 18:35 +0000

1from django import forms 

2from django.urls import reverse_lazy 

3from django.utils.translation import gettext as _ 

4 

5from extras.choices import DashboardWidgetColorChoices 

6from netbox.registry import registry 

7from utilities.forms import add_blank_choice 

8 

9__all__ = ( 

10 'DashboardWidgetAddForm', 

11 'DashboardWidgetForm', 

12) 

13 

14 

15def get_widget_choices(): 

16 return registry['widgets'].items() 

17 

18 

19class DashboardWidgetForm(forms.Form): 

20 title = forms.CharField( 

21 required=False 

22 ) 

23 color = forms.ChoiceField( 

24 choices=add_blank_choice(DashboardWidgetColorChoices), 

25 required=False, 

26 ) 

27 

28 

29class DashboardWidgetAddForm(DashboardWidgetForm): 

30 widget_class = forms.ChoiceField( 

31 choices=get_widget_choices, 

32 widget=forms.Select( 

33 attrs={ 

34 'hx-get': reverse_lazy('extras:dashboardwidget_add'), 

35 'hx-target': '#widget_add_form', 

36 } 

37 ), 

38 label=_('Widget type') 

39 ) 

40 field_order = ('widget_class', 'title', 'color')