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

Clean up object filter forms

This commit is contained in:
jeremystretch
2021-08-24 17:01:54 -04:00
parent 85b61c0b7e
commit bd681f5908
7 changed files with 212 additions and 205 deletions

View File

@ -107,9 +107,9 @@ class ProviderBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBu
class ProviderFilterForm(BootstrapMixin, CustomFieldModelFilterForm): class ProviderFilterForm(BootstrapMixin, CustomFieldModelFilterForm):
model = Provider model = Provider
field_groups = [ field_groups = [
['q'], ['q', 'tag'],
['region_id', 'site_id'], ['region_id', 'site_group_id', 'site_id'],
['asn', 'tag'], ['asn'],
] ]
q = forms.CharField( q = forms.CharField(
required=False, required=False,
@ -122,11 +122,18 @@ class ProviderFilterForm(BootstrapMixin, CustomFieldModelFilterForm):
label=_('Region'), label=_('Region'),
fetch_trigger='open' fetch_trigger='open'
) )
site_group_id = DynamicModelMultipleChoiceField(
queryset=SiteGroup.objects.all(),
required=False,
label=_('Site group'),
fetch_trigger='open'
)
site_id = DynamicModelMultipleChoiceField( site_id = DynamicModelMultipleChoiceField(
queryset=Site.objects.all(), queryset=Site.objects.all(),
required=False, required=False,
query_params={ query_params={
'region_id': '$region_id' 'region_id': '$region_id',
'site_group_id': '$site_group_id',
}, },
label=_('Site'), label=_('Site'),
fetch_trigger='open' fetch_trigger='open'
@ -202,7 +209,10 @@ class ProviderNetworkBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomField
class ProviderNetworkFilterForm(BootstrapMixin, CustomFieldModelFilterForm): class ProviderNetworkFilterForm(BootstrapMixin, CustomFieldModelFilterForm):
model = ProviderNetwork model = ProviderNetwork
field_order = ['q', 'provider_id', 'tag'] field_groups = (
('q', 'tag'),
('provider_id',),
)
q = forms.CharField( q = forms.CharField(
required=False, required=False,
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
@ -368,17 +378,12 @@ class CircuitBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBul
class CircuitFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterForm): class CircuitFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterForm):
model = Circuit model = Circuit
field_order = [
'q', 'type_id', 'provider_id', 'provider_network_id', 'status', 'region_id', 'site_id', 'tenant_group_id',
'tenant_id', 'commit_rate',
]
field_groups = [ field_groups = [
['q'], ['q', 'tag'],
['type_id', 'status', 'commit_rate'],
['provider_id', 'provider_network_id'], ['provider_id', 'provider_network_id'],
['region_id', 'site_id'], ['type_id', 'status', 'commit_rate'],
['region_id', 'site_group_id', 'site_id'],
['tenant_group_id', 'tenant_id'], ['tenant_group_id', 'tenant_id'],
['tag']
] ]
q = forms.CharField( q = forms.CharField(
required=False, required=False,
@ -417,11 +422,18 @@ class CircuitFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilte
label=_('Region'), label=_('Region'),
fetch_trigger='open' fetch_trigger='open'
) )
site_group_id = DynamicModelMultipleChoiceField(
queryset=SiteGroup.objects.all(),
required=False,
label=_('Site group'),
fetch_trigger='open'
)
site_id = DynamicModelMultipleChoiceField( site_id = DynamicModelMultipleChoiceField(
queryset=Site.objects.all(), queryset=Site.objects.all(),
required=False, required=False,
query_params={ query_params={
'region_id': '$region_id' 'region_id': '$region_id',
'site_group_id': '$site_group_id',
}, },
label=_('Site'), label=_('Site'),
fetch_trigger='open' fetch_trigger='open'

View File

@ -58,11 +58,6 @@ class DeviceComponentFilterForm(BootstrapMixin, CustomFieldModelFilterForm):
field_order = [ field_order = [
'q', 'name', 'label', 'region_id', 'site_group_id', 'site_id', 'q', 'name', 'label', 'region_id', 'site_group_id', 'site_id',
] ]
field_groups = [
['q'],
['name', 'label'],
['region_id', 'site_group_id', 'site_id'],
]
q = forms.CharField( q = forms.CharField(
required=False, required=False,
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
@ -90,7 +85,8 @@ class DeviceComponentFilterForm(BootstrapMixin, CustomFieldModelFilterForm):
queryset=Site.objects.all(), queryset=Site.objects.all(),
required=False, required=False,
query_params={ query_params={
'region_id': '$region_id' 'region_id': '$region_id',
'group_id': '$site_group_id',
}, },
label=_('Site'), label=_('Site'),
fetch_trigger='open' fetch_trigger='open'
@ -250,12 +246,19 @@ class RegionFilterForm(BootstrapMixin, CustomFieldModelFilterForm):
model = Site model = Site
field_groups = [ field_groups = [
['q'], ['q'],
['parent_id'],
] ]
q = forms.CharField( q = forms.CharField(
required=False, required=False,
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
label=_('Search') label=_('Search')
) )
parent_id = DynamicModelMultipleChoiceField(
queryset=Region.objects.all(),
required=False,
label=_('Parent region'),
fetch_trigger='open'
)
# #
@ -311,12 +314,19 @@ class SiteGroupFilterForm(BootstrapMixin, CustomFieldModelFilterForm):
model = SiteGroup model = SiteGroup
field_groups = [ field_groups = [
['q'], ['q'],
['parent_id'],
] ]
q = forms.CharField( q = forms.CharField(
required=False, required=False,
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
label=_('Search') label=_('Search')
) )
parent_id = DynamicModelMultipleChoiceField(
queryset=SiteGroup.objects.all(),
required=False,
label=_('Parent group'),
fetch_trigger='open'
)
# #
@ -476,10 +486,9 @@ class SiteFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterFo
model = Site model = Site
field_order = ['q', 'status', 'region_id', 'tenant_group_id', 'tenant_id'] field_order = ['q', 'status', 'region_id', 'tenant_group_id', 'tenant_id']
field_groups = [ field_groups = [
['q'], ['q', 'tag'],
['status', 'region_id'], ['status', 'region_id', 'group_id'],
['tenant_group_id', 'tenant_id'], ['tenant_group_id', 'tenant_id'],
['tag']
] ]
q = forms.CharField( q = forms.CharField(
required=False, required=False,
@ -500,7 +509,7 @@ class SiteFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterFo
group_id = DynamicModelMultipleChoiceField( group_id = DynamicModelMultipleChoiceField(
queryset=SiteGroup.objects.all(), queryset=SiteGroup.objects.all(),
required=False, required=False,
label=_('Group'), label=_('Site group'),
fetch_trigger='open' fetch_trigger='open'
) )
tag = TagFilterField(model) tag = TagFilterField(model)
@ -607,11 +616,18 @@ class LocationFilterForm(BootstrapMixin, CustomFieldModelFilterForm):
label=_('Region'), label=_('Region'),
fetch_trigger='open' fetch_trigger='open'
) )
site_group_id = DynamicModelMultipleChoiceField(
queryset=SiteGroup.objects.all(),
required=False,
label=_('Site group'),
fetch_trigger='open'
)
site_id = DynamicModelMultipleChoiceField( site_id = DynamicModelMultipleChoiceField(
queryset=Site.objects.all(), queryset=Site.objects.all(),
required=False, required=False,
query_params={ query_params={
'region_id': '$region_id' 'region_id': '$region_id',
'group_id': '$site_group_id',
}, },
label=_('Site'), label=_('Site'),
fetch_trigger='open' fetch_trigger='open'
@ -897,9 +913,10 @@ class RackFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterFo
model = Rack model = Rack
field_order = ['q', 'region_id', 'site_id', 'location_id', 'status', 'role_id', 'tenant_group_id', 'tenant_id'] field_order = ['q', 'region_id', 'site_id', 'location_id', 'status', 'role_id', 'tenant_group_id', 'tenant_id']
field_groups = [ field_groups = [
['q'], ['q', 'tag'],
['status', 'role_id'],
['region_id', 'site_id', 'location_id'], ['region_id', 'site_id', 'location_id'],
['status', 'role_id'],
['type', 'width', 'asset_tag'],
['tenant_group_id', 'tenant_id'], ['tenant_group_id', 'tenant_id'],
] ]
q = forms.CharField( q = forms.CharField(
@ -1134,9 +1151,10 @@ class RackReservationFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldMo
model = RackReservation model = RackReservation
field_order = ['q', 'region_id', 'site_id', 'location_id', 'user_id', 'tenant_group_id', 'tenant_id'] field_order = ['q', 'region_id', 'site_id', 'location_id', 'user_id', 'tenant_group_id', 'tenant_id']
field_groups = [ field_groups = [
['q'], ['q', 'tag'],
['user_id'],
['region_id', 'site_id', 'location_id'], ['region_id', 'site_id', 'location_id'],
['user_id', 'tenant_group_id', 'tenant_id'], ['tenant_group_id', 'tenant_id'],
] ]
q = forms.CharField( q = forms.CharField(
required=False, required=False,
@ -1155,7 +1173,7 @@ class RackReservationFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldMo
query_params={ query_params={
'region_id': '$region_id' 'region_id': '$region_id'
}, },
label=_('Region'), label=_('Site'),
fetch_trigger='open' fetch_trigger='open'
) )
location_id = DynamicModelMultipleChoiceField( location_id = DynamicModelMultipleChoiceField(
@ -1292,12 +1310,9 @@ class DeviceTypeBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModel
class DeviceTypeFilterForm(BootstrapMixin, CustomFieldModelFilterForm): class DeviceTypeFilterForm(BootstrapMixin, CustomFieldModelFilterForm):
model = DeviceType model = DeviceType
field_groups = [ field_groups = [
['q'], ['q', 'tag'],
['manufacturer_id', 'subdevice_role'], ['manufacturer_id', 'subdevice_role'],
['console_ports', 'console_server_ports'], ['console_ports', 'console_server_ports', 'power_ports', 'power_outlets', 'interfaces', 'pass_through_ports'],
['power_ports', 'power_outlets'],
['interfaces', 'pass_through_ports'],
['tag']
] ]
q = forms.CharField( q = forms.CharField(
required=False, required=False,
@ -2526,12 +2541,15 @@ class DeviceFilterForm(BootstrapMixin, LocalConfigContextFilterForm, TenancyFilt
'tenant_id', 'manufacturer_id', 'device_type_id', 'asset_tag', 'mac_address', 'has_primary_ip', 'tenant_id', 'manufacturer_id', 'device_type_id', 'asset_tag', 'mac_address', 'has_primary_ip',
] ]
field_groups = [ field_groups = [
['q'], ['q', 'tag'],
['region_id', 'site_id', 'location_id', 'rack_id'], ['region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id'],
['status', 'role_id', 'asset_tag'], ['status', 'role_id', 'asset_tag', 'mac_address'],
['manufacturer_id', 'device_type_id', 'platform_id'],
['tenant_group_id', 'tenant_id'], ['tenant_group_id', 'tenant_id'],
['manufacturer_id', 'device_type_id'], [
['mac_address', 'has_primary_ip'], 'has_primary_ip', 'virtual_chassis_member', 'console_ports', 'console_server_ports', 'power_ports',
'power_outlets', 'interfaces', 'pass_through_ports', 'local_context_data',
],
] ]
q = forms.CharField( q = forms.CharField(
required=False, required=False,
@ -2547,7 +2565,8 @@ class DeviceFilterForm(BootstrapMixin, LocalConfigContextFilterForm, TenancyFilt
site_group_id = DynamicModelMultipleChoiceField( site_group_id = DynamicModelMultipleChoiceField(
queryset=SiteGroup.objects.all(), queryset=SiteGroup.objects.all(),
required=False, required=False,
label=_('Site group') label=_('Site group'),
fetch_trigger='open'
) )
site_id = DynamicModelMultipleChoiceField( site_id = DynamicModelMultipleChoiceField(
queryset=Site.objects.all(), queryset=Site.objects.all(),
@ -2723,11 +2742,9 @@ class DeviceBulkAddComponentForm(BootstrapMixin, CustomFieldsMixin, ComponentFor
class ConsolePortFilterForm(DeviceComponentFilterForm): class ConsolePortFilterForm(DeviceComponentFilterForm):
model = ConsolePort model = ConsolePort
field_groups = [ field_groups = [
['q'], ['q', 'tag'],
['name', 'label'], ['name', 'label', 'type', 'speed'],
['type', 'speed'], ['region_id', 'site_group_id', 'site_id', 'device_id'],
['region_id', 'site_group_id', 'site_id'],
['tag']
] ]
type = forms.MultipleChoiceField( type = forms.MultipleChoiceField(
choices=ConsolePortTypeChoices, choices=ConsolePortTypeChoices,
@ -2831,11 +2848,9 @@ class ConsolePortCSVForm(CustomFieldModelCSVForm):
class ConsoleServerPortFilterForm(DeviceComponentFilterForm): class ConsoleServerPortFilterForm(DeviceComponentFilterForm):
model = ConsoleServerPort model = ConsoleServerPort
field_groups = [ field_groups = [
['q'], ['q', 'tag'],
['name', 'label'], ['name', 'label', 'type', 'speed'],
['type', 'speed'], ['region_id', 'site_group_id', 'site_id', 'device_id'],
['region_id', 'site_group_id', 'site_id'],
['tag']
] ]
type = forms.MultipleChoiceField( type = forms.MultipleChoiceField(
choices=ConsolePortTypeChoices, choices=ConsolePortTypeChoices,
@ -2939,10 +2954,9 @@ class ConsoleServerPortCSVForm(CustomFieldModelCSVForm):
class PowerPortFilterForm(DeviceComponentFilterForm): class PowerPortFilterForm(DeviceComponentFilterForm):
model = PowerPort model = PowerPort
field_groups = [ field_groups = [
['q'], ['q', 'tag'],
['name', 'label', 'type'], ['name', 'label', 'type'],
['region_id', 'site_group_id', 'site_id'], ['region_id', 'site_group_id', 'site_id', 'device_id'],
['tag'],
] ]
type = forms.MultipleChoiceField( type = forms.MultipleChoiceField(
choices=PowerPortTypeChoices, choices=PowerPortTypeChoices,
@ -3045,10 +3059,9 @@ class PowerPortCSVForm(CustomFieldModelCSVForm):
class PowerOutletFilterForm(DeviceComponentFilterForm): class PowerOutletFilterForm(DeviceComponentFilterForm):
model = PowerOutlet model = PowerOutlet
field_groups = [ field_groups = [
['q'], ['q', 'tag'],
['name', 'label', 'type'], ['name', 'label', 'type'],
['region_id', 'site_group_id', 'site_id'], ['region_id', 'site_group_id', 'site_id', 'device_id'],
['tag'],
] ]
type = forms.MultipleChoiceField( type = forms.MultipleChoiceField(
choices=PowerOutletTypeChoices, choices=PowerOutletTypeChoices,
@ -3218,11 +3231,9 @@ class PowerOutletCSVForm(CustomFieldModelCSVForm):
class InterfaceFilterForm(DeviceComponentFilterForm): class InterfaceFilterForm(DeviceComponentFilterForm):
model = Interface model = Interface
field_groups = [ field_groups = [
['q'], ['q', 'tag'],
['name', 'label', 'type', 'enabled'], ['name', 'label', 'type', 'enabled', 'mgmt_only', 'mac_address'],
['mgmt_only', 'mac_address'], ['region_id', 'site_group_id', 'site_id', 'device_id'],
['region_id', 'site_group_id', 'site_id'],
['tag'],
] ]
type = forms.MultipleChoiceField( type = forms.MultipleChoiceField(
choices=InterfaceTypeChoices, choices=InterfaceTypeChoices,
@ -3578,10 +3589,9 @@ class InterfaceCSVForm(CustomFieldModelCSVForm):
class FrontPortFilterForm(DeviceComponentFilterForm): class FrontPortFilterForm(DeviceComponentFilterForm):
field_groups = [ field_groups = [
['q'], ['q', 'tag'],
['name', 'label', 'type', 'color'], ['name', 'label', 'type', 'color'],
['region_id', 'site_group_id', 'site_id'], ['region_id', 'site_group_id', 'site_id', 'device_id'],
['tag']
] ]
model = FrontPort model = FrontPort
type = forms.MultipleChoiceField( type = forms.MultipleChoiceField(
@ -3768,10 +3778,9 @@ class FrontPortCSVForm(CustomFieldModelCSVForm):
class RearPortFilterForm(DeviceComponentFilterForm): class RearPortFilterForm(DeviceComponentFilterForm):
model = RearPort model = RearPort
field_groups = [ field_groups = [
['q'], ['q', 'tag'],
['name', 'label', 'type', 'color'], ['name', 'label', 'type', 'color'],
['region_id', 'site_group_id', 'site_id'], ['region_id', 'site_group_id', 'site_id', 'device_id'],
['tag']
] ]
type = forms.MultipleChoiceField( type = forms.MultipleChoiceField(
choices=PortTypeChoices, choices=PortTypeChoices,
@ -3870,10 +3879,9 @@ class RearPortCSVForm(CustomFieldModelCSVForm):
class DeviceBayFilterForm(DeviceComponentFilterForm): class DeviceBayFilterForm(DeviceComponentFilterForm):
model = DeviceBay model = DeviceBay
field_groups = [ field_groups = [
['q'], ['q', 'tag'],
['name', 'label'], ['name', 'label'],
['region_id', 'site_group_id', 'site_id'], ['region_id', 'site_group_id', 'site_id', 'device_id'],
['tag']
] ]
tag = TagFilterField(model) tag = TagFilterField(model)
@ -4122,11 +4130,9 @@ class InventoryItemBulkEditForm(
class InventoryItemFilterForm(DeviceComponentFilterForm): class InventoryItemFilterForm(DeviceComponentFilterForm):
model = InventoryItem model = InventoryItem
field_groups = [ field_groups = [
['q'], ['q', 'tag'],
['name', 'label', 'manufacturer_id'], ['name', 'label', 'manufacturer_id', 'serial', 'asset_tag', 'discovered'],
['serial', 'asset_tag', 'discovered'], ['region_id', 'site_group_id', 'site_id', 'device_id'],
['region_id', 'site_group_id', 'site_id'],
['tag']
] ]
manufacturer_id = DynamicModelMultipleChoiceField( manufacturer_id = DynamicModelMultipleChoiceField(
queryset=Manufacturer.objects.all(), queryset=Manufacturer.objects.all(),
@ -4598,11 +4604,10 @@ class CableBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkE
class CableFilterForm(BootstrapMixin, CustomFieldModelFilterForm): class CableFilterForm(BootstrapMixin, CustomFieldModelFilterForm):
model = Cable model = Cable
field_groups = [ field_groups = [
['q'], ['q', 'tag'],
['site_id', 'rack_id', 'device_id'],
['type', 'status', 'color'], ['type', 'status', 'color'],
['device_id', 'rack_id'], ['tenant_id'],
['region_id', 'site_id', 'tenant_id'],
['tag']
] ]
q = forms.CharField( q = forms.CharField(
required=False, required=False,
@ -4672,11 +4677,6 @@ class CableFilterForm(BootstrapMixin, CustomFieldModelFilterForm):
# #
class ConsoleConnectionFilterForm(BootstrapMixin, forms.Form): class ConsoleConnectionFilterForm(BootstrapMixin, forms.Form):
q = forms.CharField(
required=False,
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
label=_('Search')
)
region_id = DynamicModelMultipleChoiceField( region_id = DynamicModelMultipleChoiceField(
queryset=Region.objects.all(), queryset=Region.objects.all(),
required=False, required=False,
@ -4704,11 +4704,6 @@ class ConsoleConnectionFilterForm(BootstrapMixin, forms.Form):
class PowerConnectionFilterForm(BootstrapMixin, forms.Form): class PowerConnectionFilterForm(BootstrapMixin, forms.Form):
q = forms.CharField(
required=False,
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
label=_('Search')
)
region_id = DynamicModelMultipleChoiceField( region_id = DynamicModelMultipleChoiceField(
queryset=Region.objects.all(), queryset=Region.objects.all(),
required=False, required=False,
@ -4736,11 +4731,6 @@ class PowerConnectionFilterForm(BootstrapMixin, forms.Form):
class InterfaceConnectionFilterForm(BootstrapMixin, forms.Form): class InterfaceConnectionFilterForm(BootstrapMixin, forms.Form):
q = forms.CharField(
required=False,
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
label=_('Search')
)
region_id = DynamicModelMultipleChoiceField( region_id = DynamicModelMultipleChoiceField(
queryset=Region.objects.all(), queryset=Region.objects.all(),
required=False, required=False,
@ -5010,10 +5000,9 @@ class VirtualChassisFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldMod
model = VirtualChassis model = VirtualChassis
field_order = ['q', 'region_id', 'site_group_id', 'site_id', 'tenant_group_id', 'tenant_id'] field_order = ['q', 'region_id', 'site_group_id', 'site_id', 'tenant_group_id', 'tenant_id']
field_groups = [ field_groups = [
['q'], ['q', 'tag'],
['region_id', 'site_group_id', 'site_id'], ['region_id', 'site_group_id', 'site_id'],
['tenant_group_id', 'tenant_id'], ['tenant_group_id', 'tenant_id'],
['tag']
] ]
q = forms.CharField( q = forms.CharField(
required=False, required=False,
@ -5036,7 +5025,8 @@ class VirtualChassisFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldMod
queryset=Site.objects.all(), queryset=Site.objects.all(),
required=False, required=False,
query_params={ query_params={
'region_id': '$region_id' 'region_id': '$region_id',
'group_id': '$site_group_id',
}, },
label=_('Site'), label=_('Site'),
fetch_trigger='open' fetch_trigger='open'
@ -5159,6 +5149,10 @@ class PowerPanelBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModel
class PowerPanelFilterForm(BootstrapMixin, CustomFieldModelFilterForm): class PowerPanelFilterForm(BootstrapMixin, CustomFieldModelFilterForm):
model = PowerPanel model = PowerPanel
field_groups = (
('q', 'tag'),
('region_id', 'site_group_id', 'site_id', 'location_id')
)
q = forms.CharField( q = forms.CharField(
required=False, required=False,
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
@ -5180,7 +5174,8 @@ class PowerPanelFilterForm(BootstrapMixin, CustomFieldModelFilterForm):
queryset=Site.objects.all(), queryset=Site.objects.all(),
required=False, required=False,
query_params={ query_params={
'region_id': '$region_id' 'region_id': '$region_id',
'group_id': '$site_group_id',
}, },
label=_('Site'), label=_('Site'),
fetch_trigger='open' fetch_trigger='open'
@ -5402,12 +5397,10 @@ class PowerFeedBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelB
class PowerFeedFilterForm(BootstrapMixin, CustomFieldModelFilterForm): class PowerFeedFilterForm(BootstrapMixin, CustomFieldModelFilterForm):
model = PowerFeed model = PowerFeed
field_groups = [ field_groups = [
['q'], ['q', 'tag'],
['region_id', 'site_group_id', 'site_id'], ['region_id', 'site_group_id', 'site_id'],
['power_panel_id', 'rack_id'], ['power_panel_id', 'rack_id'],
['type', 'supply', 'max_utilization'], ['status', 'type', 'supply', 'phase', 'voltage', 'amperage', 'max_utilization'],
['phase', 'voltage', 'amperage'],
['status', 'tag']
] ]
q = forms.CharField( q = forms.CharField(
required=False, required=False,

View File

@ -88,12 +88,14 @@ class CustomFieldFilterForm(BootstrapMixin, forms.Form):
) )
content_types = ContentTypeMultipleChoiceField( content_types = ContentTypeMultipleChoiceField(
queryset=ContentType.objects.all(), queryset=ContentType.objects.all(),
limit_choices_to=FeatureQuery('custom_fields') limit_choices_to=FeatureQuery('custom_fields'),
required=False
) )
type = forms.MultipleChoiceField( type = forms.MultipleChoiceField(
choices=CustomFieldTypeChoices, choices=CustomFieldTypeChoices,
required=False, required=False,
widget=StaticSelectMultiple() widget=StaticSelectMultiple(),
label=_('Field type')
) )
weight = forms.IntegerField( weight = forms.IntegerField(
required=False required=False
@ -174,8 +176,7 @@ class CustomLinkBulkEditForm(BootstrapMixin, BulkEditForm):
class CustomLinkFilterForm(BootstrapMixin, forms.Form): class CustomLinkFilterForm(BootstrapMixin, forms.Form):
field_groups = [ field_groups = [
['q'], ['q'],
['content_type'], ['content_type', 'weight', 'new_window'],
['weight', 'new_window'],
] ]
q = forms.CharField( q = forms.CharField(
required=False, required=False,
@ -184,7 +185,8 @@ class CustomLinkFilterForm(BootstrapMixin, forms.Form):
) )
content_type = ContentTypeChoiceField( content_type = ContentTypeChoiceField(
queryset=ContentType.objects.all(), queryset=ContentType.objects.all(),
limit_choices_to=FeatureQuery('custom_fields') limit_choices_to=FeatureQuery('custom_fields'),
required=False
) )
weight = forms.IntegerField( weight = forms.IntegerField(
required=False required=False
@ -265,8 +267,7 @@ class ExportTemplateBulkEditForm(BootstrapMixin, BulkEditForm):
class ExportTemplateFilterForm(BootstrapMixin, forms.Form): class ExportTemplateFilterForm(BootstrapMixin, forms.Form):
field_groups = [ field_groups = [
['q'], ['q'],
['content_type', 'mime_type'], ['content_type', 'mime_type', 'file_extension', 'as_attachment'],
['file_extension', 'as_attachment'],
] ]
q = forms.CharField( q = forms.CharField(
required=False, required=False,
@ -275,10 +276,12 @@ class ExportTemplateFilterForm(BootstrapMixin, forms.Form):
) )
content_type = ContentTypeChoiceField( content_type = ContentTypeChoiceField(
queryset=ContentType.objects.all(), queryset=ContentType.objects.all(),
limit_choices_to=FeatureQuery('custom_fields') limit_choices_to=FeatureQuery('custom_fields'),
required=False
) )
mime_type = forms.CharField( mime_type = forms.CharField(
required=False required=False,
label=_('MIME type')
) )
file_extension = forms.CharField( file_extension = forms.CharField(
required=False required=False
@ -377,8 +380,8 @@ class WebhookBulkEditForm(BootstrapMixin, BulkEditForm):
class WebhookFilterForm(BootstrapMixin, forms.Form): class WebhookFilterForm(BootstrapMixin, forms.Form):
field_groups = [ field_groups = [
['q'], ['q'],
['content_types', 'http_method'], ['content_types', 'http_method', 'enabled'],
['enabled', 'type_create', 'type_update', 'type_delete'], ['type_create', 'type_update', 'type_delete'],
] ]
q = forms.CharField( q = forms.CharField(
required=False, required=False,
@ -387,12 +390,14 @@ class WebhookFilterForm(BootstrapMixin, forms.Form):
) )
content_types = ContentTypeMultipleChoiceField( content_types = ContentTypeMultipleChoiceField(
queryset=ContentType.objects.all(), queryset=ContentType.objects.all(),
limit_choices_to=FeatureQuery('custom_fields') limit_choices_to=FeatureQuery('custom_fields'),
required=False
) )
http_method = forms.MultipleChoiceField( http_method = forms.MultipleChoiceField(
choices=WebhookHttpMethodChoices, choices=WebhookHttpMethodChoices,
required=False, required=False,
widget=StaticSelectMultiple() widget=StaticSelectMultiple(),
label=_('HTTP method')
) )
enabled = forms.NullBooleanField( enabled = forms.NullBooleanField(
required=False, required=False,
@ -693,16 +698,12 @@ class ConfigContextBulkEditForm(BootstrapMixin, BulkEditForm):
class ConfigContextFilterForm(BootstrapMixin, forms.Form): class ConfigContextFilterForm(BootstrapMixin, forms.Form):
field_order = [
'q', 'region_id', 'site_group_id', 'site_id', 'role_id', 'platform_id', 'cluster_group_id',
'cluster_id', 'tenant_group_id', 'tenant_id',
]
field_groups = [ field_groups = [
['q'], ['q', 'tag'],
['region_id', 'site_group_id', 'site_id'], ['region_id', 'site_group_id', 'site_id'],
['device_type_id', 'role_id', 'platform_id'], ['device_type_id', 'platform_id', 'role_id'],
['cluster_group_id', 'cluster_id'], ['cluster_group_id', 'cluster_id'],
['tenant_group_id', 'tenant_id', 'tag'] ['tenant_group_id', 'tenant_id']
] ]
q = forms.CharField( q = forms.CharField(
required=False, required=False,

View File

@ -107,12 +107,10 @@ class VRFBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEdi
class VRFFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterForm): class VRFFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterForm):
model = VRF model = VRF
field_order = ['q', 'import_target_id', 'export_target_id', 'tenant_group_id', 'tenant_id']
field_groups = [ field_groups = [
['q'], ['q', 'tag'],
['import_target_id', 'export_target_id'], ['import_target_id', 'export_target_id'],
['tenant_group_id', 'tenant_id'], ['tenant_group_id', 'tenant_id'],
['tag']
] ]
q = forms.CharField( q = forms.CharField(
required=False, required=False,
@ -186,9 +184,8 @@ class RouteTargetBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldMode
class RouteTargetFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterForm): class RouteTargetFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterForm):
model = RouteTarget model = RouteTarget
field_order = ['q', 'name', 'tenant_group_id', 'tenant_id', 'importing_vrfs', 'exporting_vrfs']
field_groups = [ field_groups = [
['q'], ['q', 'tag'],
['importing_vrf_id', 'exporting_vrf_id'], ['importing_vrf_id', 'exporting_vrf_id'],
['tenant_group_id', 'tenant_id'], ['tenant_group_id', 'tenant_id'],
] ]
@ -348,9 +345,8 @@ class AggregateBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelB
class AggregateFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterForm): class AggregateFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterForm):
model = Aggregate model = Aggregate
field_order = ['q', 'family', 'rir', 'tenant_group_id', 'tenant_id']
field_groups = [ field_groups = [
['q'], ['q', 'tag'],
['family', 'rir_id'], ['family', 'rir_id'],
['tenant_group_id', 'tenant_id'] ['tenant_group_id', 'tenant_id']
] ]
@ -628,17 +624,13 @@ class PrefixBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulk
class PrefixFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterForm): class PrefixFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterForm):
model = Prefix model = Prefix
field_order = [
'q', 'within_include', 'family', 'mask_length', 'vrf_id', 'present_in_vrf_id', 'status',
'region_id', 'site_group_id', 'site_id', 'role_id', 'tenant_group_id', 'tenant_id',
'is_pool', 'mark_utilized',
]
field_groups = [ field_groups = [
['q'], ['q', 'tag'],
['role_id', 'within_include', 'family', 'mask_length'], ['within_include', 'family', 'status', 'role_id'],
['vrf_id', 'present_in_vrf_id', 'is_pool', 'mark_utilized'], ['vrf_id', 'present_in_vrf_id'],
['mask_length', 'is_pool', 'mark_utilized'],
['region_id', 'site_group_id', 'site_id'], ['region_id', 'site_group_id', 'site_id'],
['tenant_group_id', 'tenant_id', 'status', 'tag'] ['tenant_group_id', 'tenant_id']
] ]
q = forms.CharField( q = forms.CharField(
required=False, required=False,
@ -838,13 +830,10 @@ class IPRangeBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBul
class IPRangeFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterForm): class IPRangeFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterForm):
model = IPRange model = IPRange
field_order = [
'q', 'family', 'vrf_id', 'status', 'role_id', 'tenant_group_id', 'tenant_id',
]
field_groups = [ field_groups = [
['q'], ['q', 'tag'],
['family', 'vrf_id', 'status', 'role_id'], ['family', 'vrf_id', 'status', 'role_id'],
['tenant_group_id', 'tenant_id', 'tag'], ['tenant_group_id', 'tenant_id'],
] ]
q = forms.CharField( q = forms.CharField(
required=False, required=False,
@ -1280,10 +1269,10 @@ class IPAddressFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFil
'assigned_to_interface', 'tenant_group_id', 'tenant_id', 'assigned_to_interface', 'tenant_group_id', 'tenant_id',
] ]
field_groups = [ field_groups = [
['q'], ['q', 'tag'],
['parent', 'family', 'mask_length'], ['parent', 'family', 'status', 'role'],
['status', 'vrf_id', 'present_in_vrf_id'], ['vrf_id', 'present_in_vrf_id'],
['role', 'assigned_to_interface'], ['mask_length', 'assigned_to_interface'],
['tenant_group_id', 'tenant_id'], ['tenant_group_id', 'tenant_id'],
] ]
q = forms.CharField( q = forms.CharField(
@ -1489,8 +1478,7 @@ class VLANGroupBulkEditForm(BootstrapMixin, CustomFieldModelBulkEditForm):
class VLANGroupFilterForm(BootstrapMixin, forms.Form): class VLANGroupFilterForm(BootstrapMixin, forms.Form):
field_groups = [ field_groups = [
['q'], ['q'],
['region', 'sitegroup', 'site'], ['region', 'sitegroup', 'site', 'location', 'rack']
['location', 'rack']
] ]
q = forms.CharField( q = forms.CharField(
required=False, required=False,
@ -1707,14 +1695,10 @@ class VLANBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEd
class VLANFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterForm): class VLANFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterForm):
model = VLAN model = VLAN
field_order = [
'q', 'region_id', 'site_group_id', 'site_id', 'group_id', 'status', 'role_id',
'tenant_group_id', 'tenant_id',
]
field_groups = [ field_groups = [
['q'], ['q', 'tag'],
['region_id', 'site_group_id', 'site_id'], ['region_id', 'site_group_id', 'site_id'],
['group_id', 'role_id', 'status'], ['group_id', 'status', 'role_id'],
['tenant_group_id', 'tenant_id'], ['tenant_group_id', 'tenant_id'],
] ]
q = forms.CharField( q = forms.CharField(
@ -1818,6 +1802,10 @@ class ServiceForm(BootstrapMixin, CustomFieldModelForm):
class ServiceFilterForm(BootstrapMixin, CustomFieldModelFilterForm): class ServiceFilterForm(BootstrapMixin, CustomFieldModelFilterForm):
model = Service model = Service
field_groups = (
('q', 'tag'),
('protocol', 'port'),
)
q = forms.CharField( q = forms.CharField(
required=False, required=False,
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),

View File

@ -4,42 +4,52 @@
<form action="." method="get"> <form action="." method="get">
<div class="card"> <div class="card">
<div class="card-body overflow-visible d-flex flex-wrap justify-content-between py-3"> <div class="card-body overflow-visible d-flex flex-wrap justify-content-between py-3">
{% for field in filter_form.hidden_fields %} {% for field in filter_form.hidden_fields %}
{{ field }} {{ field }}
{% endfor %} {% endfor %}
{% if filter_form.field_groups %} {% if filter_form.field_groups %}
{% for group in filter_form.field_groups %} {# List filters by group #}
<div class="col col-12"> {% for group in filter_form.field_groups %}
{% for name in group %} <div class="col col-12">
{% with field=filter_form|get_item:name %} {% for name in group %}
{% render_field field %} {% with field=filter_form|get_item:name %}
{% endwith %} {% render_field field %}
{% endfor %} {% endwith %}
</div> {% endfor %}
<hr class="card-divider mt-0" /> </div>
{% endfor %} {% if not forloop.last %}
{% for name in filter_form.custom_field_filters %} <hr class="card-divider mt-0" />
<div class="col col-12">
{% with field=filter_form|get_item:name %}
{% render_field field %}
{% endwith %}
</div>
{% endfor %}
{% else %}
{% for field in filter_form.visible_fields %}
<div class="col col-12">
{% render_field field %}
</div>
{% endfor %}
{% endif %} {% endif %}
{% endfor %}
{% else %}
{# List all non-customfield filters as declared in the form class #}
{% for field in filter_form.visible_fields %}
{% if not filter_form.custom_field_filters or field.name not in filter_form.custom_field_filters %}
<div class="col col-12">
{% render_field field %}
</div>
{% endif %}
{% endfor %}
{% endif %}
{% if filter_form.custom_field_filters %}
{# List all custom field filters #}
<hr class="card-divider mt-0" />
{% for name in filter_form.custom_field_filters %}
<div class="col col-12">
{% with field=filter_form|get_item:name %}
{% render_field field %}
{% endwith %}
</div>
{% endfor %}
{% endif %}
</div> </div>
<div class="card-footer text-end noprint border-0"> <div class="card-footer text-end noprint border-0">
<button type="button" class="btn btn-sm btn-outline-danger m-1" data-reset-select> <button type="button" class="btn btn-sm btn-outline-danger m-1" data-reset-select>
<i class="mdi mdi-backspace"></i> Reset <i class="mdi mdi-backspace"></i> Reset
</button> </button>
<button type="submit" class="btn btn-sm btn-primary m-1"> <button type="submit" class="btn btn-sm btn-primary m-1">
<i class="mdi mdi-filter-variant"></i> Filter <i class="mdi mdi-filter-variant"></i> Filter
</button> </button>
</div> </div>
</div> </div>
</form> </form>

View File

@ -135,6 +135,10 @@ class TenantBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulk
class TenantFilterForm(BootstrapMixin, CustomFieldModelFilterForm): class TenantFilterForm(BootstrapMixin, CustomFieldModelFilterForm):
model = Tenant model = Tenant
field_groups = (
('q', 'tag'),
('group_id',),
)
q = forms.CharField( q = forms.CharField(
required=False, required=False,
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),

View File

@ -228,11 +228,10 @@ class ClusterFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilte
'q', 'type_id', 'region_id', 'site_id', 'group_id', 'tenant_group_id', 'tenant_id', 'q', 'type_id', 'region_id', 'site_id', 'group_id', 'tenant_group_id', 'tenant_id',
] ]
field_groups = [ field_groups = [
['q'], ['q', 'tag'],
['type_id'], ['group_id', 'type_id'],
['region_id', 'site_id'], ['region_id', 'site_group_id', 'site_id'],
['tenant_group_id', 'tenant_id'], ['tenant_group_id', 'tenant_id'],
['tag'],
] ]
q = forms.CharField( q = forms.CharField(
required=False, required=False,
@ -251,12 +250,19 @@ class ClusterFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilte
label=_('Region'), label=_('Region'),
fetch_trigger='open' fetch_trigger='open'
) )
site_group_id = DynamicModelMultipleChoiceField(
queryset=SiteGroup.objects.all(),
required=False,
label=_('Site group'),
fetch_trigger='open'
)
site_id = DynamicModelMultipleChoiceField( site_id = DynamicModelMultipleChoiceField(
queryset=Site.objects.all(), queryset=Site.objects.all(),
required=False, required=False,
null_option='None', null_option='None',
query_params={ query_params={
'region_id': '$region_id' 'region_id': '$region_id',
'site_group_id': '$site_group_id',
}, },
label=_('Site'), label=_('Site'),
fetch_trigger='open' fetch_trigger='open'
@ -541,18 +547,12 @@ class VirtualMachineBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldM
class VirtualMachineFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterForm): class VirtualMachineFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterForm):
model = VirtualMachine model = VirtualMachine
field_order = [
'q', 'cluster_group_id', 'cluster_type_id', 'cluster_id', 'status', 'role_id', 'region_id', 'site_group_id',
'site_id', 'tenant_group_id', 'tenant_id', 'platform_id', 'mac_address',
]
field_groups = [ field_groups = [
['q'], ['q', 'tag'],
['status', 'role_id'],
['platform_id', 'mac_address'],
['cluster_group_id', 'cluster_type_id', 'cluster_id'], ['cluster_group_id', 'cluster_type_id', 'cluster_id'],
['region_id', 'site_id'], ['region_id', 'site_group_id', 'site_id'],
['status', 'role_id', 'platform_id', 'mac_address', 'has_primary_ip'],
['tenant_group_id', 'tenant_id'], ['tenant_group_id', 'tenant_id'],
] ]
q = forms.CharField( q = forms.CharField(
required=False, required=False,
@ -878,10 +878,9 @@ class VMInterfaceBulkRenameForm(BulkRenameForm):
class VMInterfaceFilterForm(BootstrapMixin, forms.Form): class VMInterfaceFilterForm(BootstrapMixin, forms.Form):
model = VMInterface model = VMInterface
field_groups = [ field_groups = [
['q'], ['q', 'tag'],
['cluster_id', 'virtual_machine_id'], ['cluster_id', 'virtual_machine_id'],
['enabled', 'mac_address'], ['enabled', 'mac_address'],
['tag']
] ]
q = forms.CharField( q = forms.CharField(
required=False, required=False,