Coverage for tenancy/forms/filtersets.py: 100%

43 statements  

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

1from django import forms 

2from django.utils.translation import gettext_lazy as _ 

3 

4from core.models import ObjectType 

5from netbox.forms import ( 

6 NestedGroupModelFilterSetForm, 

7 NetBoxModelFilterSetForm, 

8 OrganizationalModelFilterSetForm, 

9 PrimaryModelFilterSetForm, 

10) 

11from utilities.forms.fields import ( 

12 ContentTypeMultipleChoiceField, 

13 DynamicModelMultipleChoiceField, 

14 TagFilterField, 

15) 

16from utilities.forms.rendering import FieldSet 

17 

18from ..choices import * 

19from ..models import * 

20from .forms import ContactModelFilterForm 

21 

22__all__ = ( 

23 'ContactAssignmentFilterForm', 

24 'ContactFilterForm', 

25 'ContactGroupFilterForm', 

26 'ContactRoleFilterForm', 

27 'TenantFilterForm', 

28 'TenantGroupFilterForm', 

29) 

30 

31 

32# 

33# Tenants 

34# 

35 

36class TenantGroupFilterForm(NestedGroupModelFilterSetForm): 

37 model = TenantGroup 

38 fieldsets = ( 

39 FieldSet('q', 'filter_id', 'tag'), 

40 FieldSet('parent_id', name=_('Tenant Group')), 

41 FieldSet('owner_group_id', 'owner_id', name=_('Ownership')), 

42 ) 

43 parent_id = DynamicModelMultipleChoiceField( 

44 queryset=TenantGroup.objects.all(), 

45 required=False, 

46 label=_('Parent group') 

47 ) 

48 tag = TagFilterField(model) 

49 

50 

51class TenantFilterForm(ContactModelFilterForm, PrimaryModelFilterSetForm): 

52 model = Tenant 

53 fieldsets = ( 

54 FieldSet('q', 'filter_id', 'tag'), 

55 FieldSet('group_id', name=_('Tenant')), 

56 FieldSet('owner_group_id', 'owner_id', name=_('Ownership')), 

57 FieldSet('contact', 'contact_role', 'contact_group', name=_('Contacts')) 

58 ) 

59 group_id = DynamicModelMultipleChoiceField( 

60 queryset=TenantGroup.objects.all(), 

61 required=False, 

62 null_option='None', 

63 label=_('Group') 

64 ) 

65 tag = TagFilterField(model) 

66 

67 

68# 

69# Contacts 

70# 

71 

72class ContactGroupFilterForm(NestedGroupModelFilterSetForm): 

73 model = ContactGroup 

74 fieldsets = ( 

75 FieldSet('q', 'filter_id', 'tag'), 

76 FieldSet('parent_id', name=_('Contact Group')), 

77 FieldSet('owner_group_id', 'owner_id', name=_('Ownership')), 

78 ) 

79 parent_id = DynamicModelMultipleChoiceField( 

80 queryset=ContactGroup.objects.all(), 

81 required=False, 

82 label=_('Parent group') 

83 ) 

84 tag = TagFilterField(model) 

85 

86 

87class ContactRoleFilterForm(OrganizationalModelFilterSetForm): 

88 model = ContactRole 

89 fieldsets = ( 

90 FieldSet('q', 'filter_id', 'tag'), 

91 FieldSet('owner_group_id', 'owner_id', name=_('Ownership')), 

92 ) 

93 tag = TagFilterField(model) 

94 

95 

96class ContactFilterForm(PrimaryModelFilterSetForm): 

97 model = Contact 

98 fieldsets = ( 

99 FieldSet('q', 'filter_id', 'tag'), 

100 FieldSet('group_id', name=_('Contact')), 

101 FieldSet('owner_group_id', 'owner_id', name=_('Ownership')), 

102 ) 

103 group_id = DynamicModelMultipleChoiceField( 

104 queryset=ContactGroup.objects.all(), 

105 required=False, 

106 null_option='None', 

107 label=_('Groups') 

108 ) 

109 tag = TagFilterField(model) 

110 

111 

112class ContactAssignmentFilterForm(NetBoxModelFilterSetForm): 

113 model = ContactAssignment 

114 fieldsets = ( 

115 FieldSet('q', 'filter_id', 'tag'), 

116 FieldSet('object_type_id', 'group_id', 'contact_id', 'role_id', 'priority', name=_('Assignment')), 

117 ) 

118 object_type_id = ContentTypeMultipleChoiceField( 

119 queryset=ObjectType.objects.with_feature('contacts'), 

120 required=False, 

121 label=_('Object type') 

122 ) 

123 group_id = DynamicModelMultipleChoiceField( 

124 queryset=ContactGroup.objects.all(), 

125 required=False, 

126 label=_('Group') 

127 ) 

128 contact_id = DynamicModelMultipleChoiceField( 

129 queryset=Contact.objects.all(), 

130 required=False, 

131 label=_('Contact') 

132 ) 

133 role_id = DynamicModelMultipleChoiceField( 

134 queryset=ContactRole.objects.all(), 

135 required=False, 

136 label=_('Role') 

137 ) 

138 priority = forms.MultipleChoiceField( 

139 label=_('Priority'), 

140 choices=ContactPriorityChoices, 

141 required=False 

142 ) 

143 tag = TagFilterField(model)