Replace filter_groups with fieldsets on filter forms

This commit is contained in:
jeremystretch 2022-01-31 16:03:26 -05:00
parent ccb3a75281
commit 353e132cf9
8 changed files with 270 additions and 274 deletions

View File

@ -18,11 +18,11 @@ __all__ = (
class ProviderFilterForm(NetBoxModelFilterSetForm): class ProviderFilterForm(NetBoxModelFilterSetForm):
model = Provider model = Provider
field_groups = [ fieldsets = (
['q', 'tag'], (None, ('q', 'tag')),
['region_id', 'site_group_id', 'site_id'], ('Location', ('region_id', 'site_group_id', 'site_id')),
['asn'], ('ASN', ('asn',)),
] )
region_id = DynamicModelMultipleChoiceField( region_id = DynamicModelMultipleChoiceField(
queryset=Region.objects.all(), queryset=Region.objects.all(),
required=False, required=False,
@ -51,9 +51,9 @@ class ProviderFilterForm(NetBoxModelFilterSetForm):
class ProviderNetworkFilterForm(NetBoxModelFilterSetForm): class ProviderNetworkFilterForm(NetBoxModelFilterSetForm):
model = ProviderNetwork model = ProviderNetwork
field_groups = ( fieldsets = (
('q', 'tag'), (None, ('q', 'tag')),
('provider_id',), ('Attributes', ('provider_id', 'service_id')),
) )
provider_id = DynamicModelMultipleChoiceField( provider_id = DynamicModelMultipleChoiceField(
queryset=Provider.objects.all(), queryset=Provider.objects.all(),
@ -74,13 +74,13 @@ class CircuitTypeFilterForm(NetBoxModelFilterSetForm):
class CircuitFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm): class CircuitFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
model = Circuit model = Circuit
field_groups = [ fieldsets = (
['q', 'tag'], (None, ('q', 'tag')),
['provider_id', 'provider_network_id'], ('Provider', ('provider_id', 'provider_network_id')),
['type_id', 'status', 'commit_rate'], ('Attributes', ('type_id', 'status', 'commit_rate')),
['region_id', 'site_group_id', 'site_id'], ('Location', ('region_id', 'site_group_id', 'site_id')),
['tenant_group_id', 'tenant_id'], ('Tenant', ('tenant_group_id', 'tenant_id')),
] )
type_id = DynamicModelMultipleChoiceField( type_id = DynamicModelMultipleChoiceField(
queryset=CircuitType.objects.all(), queryset=CircuitType.objects.all(),
required=False, required=False,

View File

@ -126,12 +126,11 @@ class SiteGroupFilterForm(NetBoxModelFilterSetForm):
class SiteFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm): class SiteFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
model = Site model = Site
field_groups = [ fieldsets = (
['q', 'tag'], (None, ('q', 'tag')),
['status', 'region_id', 'group_id'], ('Attributes', ('status', 'region_id', 'group_id', 'asn_id')),
['tenant_group_id', 'tenant_id'], ('Tenant', ('tenant_group_id', 'tenant_id')),
['asn_id'] )
]
status = forms.MultipleChoiceField( status = forms.MultipleChoiceField(
choices=SiteStatusChoices, choices=SiteStatusChoices,
required=False, required=False,
@ -157,11 +156,11 @@ class SiteFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
class LocationFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm): class LocationFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
model = Location model = Location
field_groups = [ fieldsets = (
['q', 'tag'], (None, ('q', 'tag')),
['region_id', 'site_group_id', 'site_id', 'parent_id'], ('Parent', ('region_id', 'site_group_id', 'site_id', 'parent_id')),
['tenant_group_id', 'tenant_id'], ('Tenant', ('tenant_group_id', 'tenant_id')),
] )
region_id = DynamicModelMultipleChoiceField( region_id = DynamicModelMultipleChoiceField(
queryset=Region.objects.all(), queryset=Region.objects.all(),
required=False, required=False,
@ -200,13 +199,13 @@ class RackRoleFilterForm(NetBoxModelFilterSetForm):
class RackFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm): class RackFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
model = Rack model = Rack
field_groups = [ fieldsets = (
['q', 'tag'], (None, ('q', 'tag')),
['region_id', 'site_id', 'location_id'], ('Location', ('region_id', 'site_id', 'location_id')),
['status', 'role_id'], ('Function', ('status', 'role_id')),
['type', 'width', 'serial', 'asset_tag'], ('Hardware', ('type', 'width', 'serial', 'asset_tag')),
['tenant_group_id', 'tenant_id'], ('Tenant', ('tenant_group_id', 'tenant_id')),
] )
region_id = DynamicModelMultipleChoiceField( region_id = DynamicModelMultipleChoiceField(
queryset=Region.objects.all(), queryset=Region.objects.all(),
required=False, required=False,
@ -273,12 +272,12 @@ class RackElevationFilterForm(RackFilterForm):
class RackReservationFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm): class RackReservationFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
model = RackReservation model = RackReservation
field_groups = [ fieldsets = (
['q', 'tag'], (None, ('q', 'tag')),
['user_id'], ('User', ('user_id',)),
['region_id', 'site_id', 'location_id'], ('Rack', ('region_id', 'site_id', 'location_id')),
['tenant_group_id', 'tenant_id'], ('Tenant', ('tenant_group_id', 'tenant_id')),
] )
region_id = DynamicModelMultipleChoiceField( region_id = DynamicModelMultipleChoiceField(
queryset=Region.objects.all(), queryset=Region.objects.all(),
required=False, required=False,
@ -316,11 +315,14 @@ class ManufacturerFilterForm(NetBoxModelFilterSetForm):
class DeviceTypeFilterForm(NetBoxModelFilterSetForm): class DeviceTypeFilterForm(NetBoxModelFilterSetForm):
model = DeviceType model = DeviceType
field_groups = [ fieldsets = (
['q', 'tag'], (None, ('q', 'tag')),
['manufacturer_id', 'part_number', 'subdevice_role', 'airflow'], ('Hardware', ('manufacturer_id', 'part_number', 'subdevice_role', 'airflow')),
['console_ports', 'console_server_ports', 'power_ports', 'power_outlets', 'interfaces', 'pass_through_ports'], ('Components', (
] 'console_ports', 'console_server_ports', 'power_ports', 'power_outlets', 'interfaces',
'pass_through_ports',
)),
)
manufacturer_id = DynamicModelMultipleChoiceField( manufacturer_id = DynamicModelMultipleChoiceField(
queryset=Manufacturer.objects.all(), queryset=Manufacturer.objects.all(),
required=False, required=False,
@ -386,11 +388,14 @@ class DeviceTypeFilterForm(NetBoxModelFilterSetForm):
class ModuleTypeFilterForm(NetBoxModelFilterSetForm): class ModuleTypeFilterForm(NetBoxModelFilterSetForm):
model = ModuleType model = ModuleType
field_groups = [ fieldsets = (
['q', 'tag'], (None, ('q', 'tag')),
['manufacturer_id', 'part_number'], ('Hardware', ('manufacturer_id', 'part_number')),
['console_ports', 'console_server_ports', 'power_ports', 'power_outlets', 'interfaces', 'pass_through_ports'], ('Components', (
] 'console_ports', 'console_server_ports', 'power_ports', 'power_outlets', 'interfaces',
'pass_through_ports',
)),
)
manufacturer_id = DynamicModelMultipleChoiceField( manufacturer_id = DynamicModelMultipleChoiceField(
queryset=Manufacturer.objects.all(), queryset=Manufacturer.objects.all(),
required=False, required=False,
@ -462,17 +467,17 @@ class PlatformFilterForm(NetBoxModelFilterSetForm):
class DeviceFilterForm(LocalConfigContextFilterForm, TenancyFilterForm, NetBoxModelFilterSetForm): class DeviceFilterForm(LocalConfigContextFilterForm, TenancyFilterForm, NetBoxModelFilterSetForm):
model = Device model = Device
field_groups = [ fieldsets = (
['q', 'tag'], (None, ('q', 'tag')),
['region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id'], ('Location', ('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id')),
['status', 'role_id', 'airflow', 'serial', 'asset_tag', 'mac_address'], ('Operation', ('status', 'role_id', 'airflow', 'serial', 'asset_tag', 'mac_address')),
['manufacturer_id', 'device_type_id', 'platform_id'], ('Hardware', ('manufacturer_id', 'device_type_id', 'platform_id')),
['tenant_group_id', 'tenant_id'], ('Tenant', ('tenant_group_id', 'tenant_id')),
[ ('Components', (
'has_primary_ip', 'virtual_chassis_member', 'console_ports', 'console_server_ports', 'power_ports', 'console_ports', 'console_server_ports', 'power_ports', 'power_outlets', 'interfaces', 'pass_through_ports',
'power_outlets', 'interfaces', 'pass_through_ports', 'local_context_data', )),
], ('Miscellaneous', ('has_primary_ip', 'virtual_chassis_member', 'local_context_data'))
] )
region_id = DynamicModelMultipleChoiceField( region_id = DynamicModelMultipleChoiceField(
queryset=Region.objects.all(), queryset=Region.objects.all(),
required=False, required=False,
@ -616,11 +621,10 @@ class DeviceFilterForm(LocalConfigContextFilterForm, TenancyFilterForm, NetBoxMo
class ModuleFilterForm(LocalConfigContextFilterForm, TenancyFilterForm, NetBoxModelFilterSetForm): class ModuleFilterForm(LocalConfigContextFilterForm, TenancyFilterForm, NetBoxModelFilterSetForm):
model = Module model = Module
field_groups = [ fieldsets = (
['q', 'tag'], (None, ('q', 'tag')),
['manufacturer_id', 'module_type_id'], ('Hardware', ('manufacturer_id', 'module_type_id', 'serial', 'asset_tag')),
['serial', 'asset_tag'], )
]
manufacturer_id = DynamicModelMultipleChoiceField( manufacturer_id = DynamicModelMultipleChoiceField(
queryset=Manufacturer.objects.all(), queryset=Manufacturer.objects.all(),
required=False, required=False,
@ -647,11 +651,11 @@ class ModuleFilterForm(LocalConfigContextFilterForm, TenancyFilterForm, NetBoxMo
class VirtualChassisFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm): class VirtualChassisFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
model = VirtualChassis model = VirtualChassis
field_groups = [ fieldsets = (
['q', 'tag'], (None, ('q', 'tag')),
['region_id', 'site_group_id', 'site_id'], ('Location', ('region_id', 'site_group_id', 'site_id')),
['tenant_group_id', 'tenant_id'], ('Tenant', ('tenant_group_id', 'tenant_id')),
] )
region_id = DynamicModelMultipleChoiceField( region_id = DynamicModelMultipleChoiceField(
queryset=Region.objects.all(), queryset=Region.objects.all(),
required=False, required=False,
@ -676,12 +680,12 @@ class VirtualChassisFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
class CableFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm): class CableFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
model = Cable model = Cable
field_groups = [ fieldsets = (
['q', 'tag'], (None, ('q', 'tag')),
['site_id', 'rack_id', 'device_id'], ('Location', ('site_id', 'rack_id', 'device_id')),
['type', 'status', 'color', 'length', 'length_unit'], ('Attributes', ('type', 'status', 'color', 'length', 'length_unit')),
['tenant_group_id', 'tenant_id'], ('Tenant', ('tenant_group_id', 'tenant_id')),
] )
region_id = DynamicModelMultipleChoiceField( region_id = DynamicModelMultipleChoiceField(
queryset=Region.objects.all(), queryset=Region.objects.all(),
required=False, required=False,
@ -739,9 +743,9 @@ class CableFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
class PowerPanelFilterForm(NetBoxModelFilterSetForm): class PowerPanelFilterForm(NetBoxModelFilterSetForm):
model = PowerPanel model = PowerPanel
field_groups = ( fieldsets = (
('q', 'tag'), (None, ('q', 'tag')),
('region_id', 'site_group_id', 'site_id', 'location_id') ('Location', ('region_id', 'site_group_id', 'site_id', 'location_id'))
) )
region_id = DynamicModelMultipleChoiceField( region_id = DynamicModelMultipleChoiceField(
queryset=Region.objects.all(), queryset=Region.objects.all(),
@ -776,12 +780,11 @@ class PowerPanelFilterForm(NetBoxModelFilterSetForm):
class PowerFeedFilterForm(NetBoxModelFilterSetForm): class PowerFeedFilterForm(NetBoxModelFilterSetForm):
model = PowerFeed model = PowerFeed
field_groups = [ fieldsets = (
['q', 'tag'], (None, ('q', 'tag')),
['region_id', 'site_group_id', 'site_id'], ('Location', ('region_id', 'site_group_id', 'site_id', 'power_panel_id', 'rack_id')),
['power_panel_id', 'rack_id'], ('Attributes', ('status', 'type', 'supply', 'phase', 'voltage', 'amperage', 'max_utilization')),
['status', 'type', 'supply', 'phase', 'voltage', 'amperage', 'max_utilization'], )
]
region_id = DynamicModelMultipleChoiceField( region_id = DynamicModelMultipleChoiceField(
queryset=Region.objects.all(), queryset=Region.objects.all(),
required=False, required=False,
@ -856,11 +859,11 @@ class PowerFeedFilterForm(NetBoxModelFilterSetForm):
class ConsolePortFilterForm(DeviceComponentFilterForm): class ConsolePortFilterForm(DeviceComponentFilterForm):
model = ConsolePort model = ConsolePort
field_groups = [ fieldsets = (
['q', 'tag'], (None, ('q', 'tag')),
['name', 'label', 'type', 'speed'], ('Attributes', ('name', 'label', 'type', 'speed')),
['region_id', 'site_group_id', 'site_id', 'location_id', 'virtual_chassis_id', 'device_id'], ('Device', ('region_id', 'site_group_id', 'site_id', 'location_id', 'virtual_chassis_id', 'device_id')),
] )
type = forms.MultipleChoiceField( type = forms.MultipleChoiceField(
choices=ConsolePortTypeChoices, choices=ConsolePortTypeChoices,
required=False, required=False,
@ -876,11 +879,11 @@ class ConsolePortFilterForm(DeviceComponentFilterForm):
class ConsoleServerPortFilterForm(DeviceComponentFilterForm): class ConsoleServerPortFilterForm(DeviceComponentFilterForm):
model = ConsoleServerPort model = ConsoleServerPort
field_groups = [ fieldsets = (
['q', 'tag'], (None, ('q', 'tag')),
['name', 'label', 'type', 'speed'], ('Attributes', ('name', 'label', 'type', 'speed')),
['region_id', 'site_group_id', 'site_id', 'location_id', 'virtual_chassis_id', 'device_id'], ('Device', ('region_id', 'site_group_id', 'site_id', 'location_id', 'virtual_chassis_id', 'device_id')),
] )
type = forms.MultipleChoiceField( type = forms.MultipleChoiceField(
choices=ConsolePortTypeChoices, choices=ConsolePortTypeChoices,
required=False, required=False,
@ -896,11 +899,11 @@ class ConsoleServerPortFilterForm(DeviceComponentFilterForm):
class PowerPortFilterForm(DeviceComponentFilterForm): class PowerPortFilterForm(DeviceComponentFilterForm):
model = PowerPort model = PowerPort
field_groups = [ fieldsets = (
['q', 'tag'], (None, ('q', 'tag')),
['name', 'label', 'type'], ('Attributes', ('name', 'label', 'type')),
['region_id', 'site_group_id', 'site_id', 'location_id', 'virtual_chassis_id', 'device_id'], ('Device', ('region_id', 'site_group_id', 'site_id', 'location_id', 'virtual_chassis_id', 'device_id')),
] )
type = forms.MultipleChoiceField( type = forms.MultipleChoiceField(
choices=PowerPortTypeChoices, choices=PowerPortTypeChoices,
required=False, required=False,
@ -911,11 +914,11 @@ class PowerPortFilterForm(DeviceComponentFilterForm):
class PowerOutletFilterForm(DeviceComponentFilterForm): class PowerOutletFilterForm(DeviceComponentFilterForm):
model = PowerOutlet model = PowerOutlet
field_groups = [ fieldsets = (
['q', 'tag'], (None, ('q', 'tag')),
['name', 'label', 'type'], ('Attributes', ('name', 'label', 'type')),
['region_id', 'site_group_id', 'site_id', 'location_id', 'virtual_chassis_id', 'device_id'], ('Device', ('region_id', 'site_group_id', 'site_id', 'location_id', 'virtual_chassis_id', 'device_id')),
] )
type = forms.MultipleChoiceField( type = forms.MultipleChoiceField(
choices=PowerOutletTypeChoices, choices=PowerOutletTypeChoices,
required=False, required=False,
@ -926,13 +929,13 @@ class PowerOutletFilterForm(DeviceComponentFilterForm):
class InterfaceFilterForm(DeviceComponentFilterForm): class InterfaceFilterForm(DeviceComponentFilterForm):
model = Interface model = Interface
field_groups = [ fieldsets = (
['q', 'tag'], (None, ('q', 'tag')),
['name', 'label', 'kind', 'type', 'speed', 'duplex', 'enabled', 'mgmt_only'], ('Attributes', ('name', 'label', 'kind', 'type', 'speed', 'duplex', 'enabled', 'mgmt_only')),
['vrf_id', 'mac_address', 'wwn'], ('Addressing', ('vrf_id', 'mac_address', 'wwn')),
['rf_role', 'rf_channel', 'rf_channel_width', 'tx_power'], ('Wireless', ('rf_role', 'rf_channel', 'rf_channel_width', 'tx_power')),
['region_id', 'site_group_id', 'site_id', 'location_id', 'virtual_chassis_id', 'device_id'], ('Device', ('region_id', 'site_group_id', 'site_id', 'location_id', 'virtual_chassis_id', 'device_id')),
] )
kind = forms.MultipleChoiceField( kind = forms.MultipleChoiceField(
choices=InterfaceKindChoices, choices=InterfaceKindChoices,
required=False, required=False,
@ -1009,11 +1012,11 @@ class InterfaceFilterForm(DeviceComponentFilterForm):
class FrontPortFilterForm(DeviceComponentFilterForm): class FrontPortFilterForm(DeviceComponentFilterForm):
field_groups = [ fieldsets = (
['q', 'tag'], (None, ('q', 'tag')),
['name', 'label', 'type', 'color'], ('Attributes', ('name', 'label', 'type', 'color')),
['region_id', 'site_group_id', 'site_id', 'location_id', 'virtual_chassis_id', 'device_id'], ('Device', ('region_id', 'site_group_id', 'site_id', 'location_id', 'virtual_chassis_id', 'device_id')),
] )
model = FrontPort model = FrontPort
type = forms.MultipleChoiceField( type = forms.MultipleChoiceField(
choices=PortTypeChoices, choices=PortTypeChoices,
@ -1028,11 +1031,11 @@ class FrontPortFilterForm(DeviceComponentFilterForm):
class RearPortFilterForm(DeviceComponentFilterForm): class RearPortFilterForm(DeviceComponentFilterForm):
model = RearPort model = RearPort
field_groups = [ fieldsets = (
['q', 'tag'], (None, ('q', 'tag')),
['name', 'label', 'type', 'color'], ('Attributes', ('name', 'label', 'type', 'color')),
['region_id', 'site_group_id', 'site_id', 'location_id', 'virtual_chassis_id', 'device_id'], ('Device', ('region_id', 'site_group_id', 'site_id', 'location_id', 'virtual_chassis_id', 'device_id')),
] )
type = forms.MultipleChoiceField( type = forms.MultipleChoiceField(
choices=PortTypeChoices, choices=PortTypeChoices,
required=False, required=False,
@ -1046,11 +1049,11 @@ class RearPortFilterForm(DeviceComponentFilterForm):
class ModuleBayFilterForm(DeviceComponentFilterForm): class ModuleBayFilterForm(DeviceComponentFilterForm):
model = ModuleBay model = ModuleBay
field_groups = [ fieldsets = (
['q', 'tag'], (None, ('q', 'tag')),
['name', 'label', 'position'], ('Attributes', ('name', 'label', 'position')),
['region_id', 'site_group_id', 'site_id', 'location_id', 'virtual_chassis_id', 'device_id'], ('Device', ('region_id', 'site_group_id', 'site_id', 'location_id', 'virtual_chassis_id', 'device_id')),
] )
tag = TagFilterField(model) tag = TagFilterField(model)
position = forms.CharField( position = forms.CharField(
required=False required=False
@ -1059,21 +1062,21 @@ class ModuleBayFilterForm(DeviceComponentFilterForm):
class DeviceBayFilterForm(DeviceComponentFilterForm): class DeviceBayFilterForm(DeviceComponentFilterForm):
model = DeviceBay model = DeviceBay
field_groups = [ fieldsets = (
['q', 'tag'], (None, ('q', 'tag')),
['name', 'label'], ('Attributes', ('name', 'label')),
['region_id', 'site_group_id', 'site_id', 'location_id', 'virtual_chassis_id', 'device_id'], ('Device', ('region_id', 'site_group_id', 'site_id', 'location_id', 'virtual_chassis_id', 'device_id')),
] )
tag = TagFilterField(model) tag = TagFilterField(model)
class InventoryItemFilterForm(DeviceComponentFilterForm): class InventoryItemFilterForm(DeviceComponentFilterForm):
model = InventoryItem model = InventoryItem
field_groups = [ fieldsets = (
['q', 'tag'], (None, ('q', 'tag')),
['name', 'label', 'manufacturer_id', 'serial', 'asset_tag', 'discovered'], ('Attributes', ('name', 'label', 'manufacturer_id', 'serial', 'asset_tag', 'discovered')),
['region_id', 'site_group_id', 'site_id', 'location_id', 'virtual_chassis_id', 'device_id'], ('Device', ('region_id', 'site_group_id', 'site_id', 'location_id', 'virtual_chassis_id', 'device_id')),
] )
role_id = DynamicModelMultipleChoiceField( role_id = DynamicModelMultipleChoiceField(
queryset=InventoryItemRole.objects.all(), queryset=InventoryItemRole.objects.all(),
required=False, required=False,

View File

@ -28,11 +28,10 @@ __all__ = (
class CustomFieldFilterForm(FilterForm): class CustomFieldFilterForm(FilterForm):
field_groups = [ fieldsets = (
['q'], (None, ('q',)),
['type', 'content_types'], ('Attributes', ('type', 'content_types', 'weight', 'required')),
['weight', 'required'], )
]
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'),
@ -56,10 +55,10 @@ class CustomFieldFilterForm(FilterForm):
class CustomLinkFilterForm(FilterForm): class CustomLinkFilterForm(FilterForm):
field_groups = [ fieldsets = (
['q'], (None, ('q',)),
['content_type', 'enabled', 'new_window', 'weight'], ('Attributes', ('content_type', 'enabled', 'new_window', 'weight')),
] )
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'),
@ -83,10 +82,10 @@ class CustomLinkFilterForm(FilterForm):
class ExportTemplateFilterForm(FilterForm): class ExportTemplateFilterForm(FilterForm):
field_groups = [ fieldsets = (
['q'], (None, ('q',)),
['content_type', 'mime_type', 'file_extension', 'as_attachment'], ('Attributes', ('content_type', 'mime_type', 'file_extension', 'as_attachment')),
] )
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'),
@ -108,11 +107,11 @@ class ExportTemplateFilterForm(FilterForm):
class WebhookFilterForm(FilterForm): class WebhookFilterForm(FilterForm):
field_groups = [ fieldsets = (
['q'], (None, ('q',)),
['content_types', 'http_method', 'enabled'], ('Attributes', ('content_types', 'http_method', 'enabled')),
['type_create', 'type_update', 'type_delete'], ('Events', ('type_create', 'type_update', 'type_delete')),
] )
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'),
@ -160,13 +159,13 @@ class TagFilterForm(FilterForm):
class ConfigContextFilterForm(FilterForm): class ConfigContextFilterForm(FilterForm):
field_groups = [ fieldsets = (
['q', 'tag'], (None, ('q', 'tag')),
['region_id', 'site_group_id', 'site_id'], ('Location', ('region_id', 'site_group_id', 'site_id')),
['device_type_id', 'platform_id', 'role_id'], ('Device', ('device_type_id', 'platform_id', 'role_id')),
['cluster_type_id', 'cluster_group_id', 'cluster_id'], ('Cluster', ('cluster_type_id', 'cluster_group_id', 'cluster_id')),
['tenant_group_id', 'tenant_id'] ('Tenant', ('tenant_group_id', 'tenant_id'))
] )
region_id = DynamicModelMultipleChoiceField( region_id = DynamicModelMultipleChoiceField(
queryset=Region.objects.all(), queryset=Region.objects.all(),
required=False, required=False,
@ -243,11 +242,11 @@ class LocalConfigContextFilterForm(forms.Form):
class JournalEntryFilterForm(FilterForm): class JournalEntryFilterForm(FilterForm):
model = JournalEntry model = JournalEntry
field_groups = [ fieldsets = (
['q'], (None, ('q',)),
['created_before', 'created_after', 'created_by_id'], ('Creation', ('created_before', 'created_after', 'created_by_id')),
['assigned_object_type_id', 'kind'] ('Attributes', ('assigned_object_type_id', 'kind'))
] )
created_after = forms.DateTimeField( created_after = forms.DateTimeField(
required=False, required=False,
label=_('After'), label=_('After'),
@ -283,11 +282,11 @@ class JournalEntryFilterForm(FilterForm):
class ObjectChangeFilterForm(FilterForm): class ObjectChangeFilterForm(FilterForm):
model = ObjectChange model = ObjectChange
field_groups = [ fieldsets = (
['q'], (None, ('q',)),
['time_before', 'time_after', 'action'], ('Time', ('time_before', 'time_after')),
['user_id', 'changed_object_type_id'], ('Attributes', ('action', 'user_id', 'changed_object_type_id')),
] )
time_after = forms.DateTimeField( time_after = forms.DateTimeField(
required=False, required=False,
label=_('After'), label=_('After'),

View File

@ -41,11 +41,11 @@ IPADDRESS_MASK_LENGTH_CHOICES = add_blank_choice([
class VRFFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm): class VRFFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
model = VRF model = VRF
field_groups = [ fieldsets = (
['q', 'tag'], (None, ('q', 'tag')),
['import_target_id', 'export_target_id'], ('Route Targets', ('import_target_id', 'export_target_id')),
['tenant_group_id', 'tenant_id'], ('Tenant', ('tenant_group_id', 'tenant_id')),
] )
import_target_id = DynamicModelMultipleChoiceField( import_target_id = DynamicModelMultipleChoiceField(
queryset=RouteTarget.objects.all(), queryset=RouteTarget.objects.all(),
required=False, required=False,
@ -61,11 +61,11 @@ class VRFFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
class RouteTargetFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm): class RouteTargetFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
model = RouteTarget model = RouteTarget
field_groups = [ fieldsets = (
['q', 'tag'], (None, ('q', 'tag')),
['importing_vrf_id', 'exporting_vrf_id'], ('VRF', ('importing_vrf_id', 'exporting_vrf_id')),
['tenant_group_id', 'tenant_id'], ('Tenant', ('tenant_group_id', 'tenant_id')),
] )
importing_vrf_id = DynamicModelMultipleChoiceField( importing_vrf_id = DynamicModelMultipleChoiceField(
queryset=VRF.objects.all(), queryset=VRF.objects.all(),
required=False, required=False,
@ -93,11 +93,11 @@ class RIRFilterForm(NetBoxModelFilterSetForm):
class AggregateFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm): class AggregateFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
model = Aggregate model = Aggregate
field_groups = [ fieldsets = (
['q', 'tag'], (None, ('q', 'tag')),
['family', 'rir_id'], ('Attributes', ('family', 'rir_id')),
['tenant_group_id', 'tenant_id'] ('Tenant', ('tenant_group_id', 'tenant_id')),
] )
family = forms.ChoiceField( family = forms.ChoiceField(
required=False, required=False,
choices=add_blank_choice(IPAddressFamilyChoices), choices=add_blank_choice(IPAddressFamilyChoices),
@ -114,12 +114,11 @@ class AggregateFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
class ASNFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm): class ASNFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
model = ASN model = ASN
field_groups = [ fieldsets = (
['q'], (None, ('q', 'tag')),
['rir_id'], ('Assignment', ('rir_id', 'site_id')),
['tenant_group_id', 'tenant_id'], ('Tenant', ('tenant_group_id', 'tenant_id')),
['site_id'], )
]
rir_id = DynamicModelMultipleChoiceField( rir_id = DynamicModelMultipleChoiceField(
queryset=RIR.objects.all(), queryset=RIR.objects.all(),
required=False, required=False,
@ -130,6 +129,7 @@ class ASNFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
required=False, required=False,
label=_('Site') label=_('Site')
) )
tag = TagFilterField(model)
class RoleFilterForm(NetBoxModelFilterSetForm): class RoleFilterForm(NetBoxModelFilterSetForm):
@ -139,13 +139,13 @@ class RoleFilterForm(NetBoxModelFilterSetForm):
class PrefixFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm): class PrefixFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
model = Prefix model = Prefix
field_groups = [ fieldsets = (
['q', 'tag'], (None, ('q', 'tag')),
['within_include', 'family', 'status', 'role_id', 'mask_length', 'is_pool', 'mark_utilized'], ('Addressing', ('within_include', 'family', 'status', 'role_id', 'mask_length', 'is_pool', 'mark_utilized')),
['vrf_id', 'present_in_vrf_id'], ('VRF', ('vrf_id', 'present_in_vrf_id')),
['region_id', 'site_group_id', 'site_id'], ('Location', ('region_id', 'site_group_id', 'site_id')),
['tenant_group_id', 'tenant_id'] ('Tenant', ('tenant_group_id', 'tenant_id')),
] )
mask_length__lte = forms.IntegerField( mask_length__lte = forms.IntegerField(
widget=forms.HiddenInput() widget=forms.HiddenInput()
) )
@ -230,11 +230,11 @@ class PrefixFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
class IPRangeFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm): class IPRangeFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
model = IPRange model = IPRange
field_groups = [ fieldsets = (
['q', 'tag'], (None, ('q', 'tag')),
['family', 'vrf_id', 'status', 'role_id'], ('Attriubtes', ('family', 'vrf_id', 'status', 'role_id')),
['tenant_group_id', 'tenant_id'], ('Tenant', ('tenant_group_id', 'tenant_id')),
] )
family = forms.ChoiceField( family = forms.ChoiceField(
required=False, required=False,
choices=add_blank_choice(IPAddressFamilyChoices), choices=add_blank_choice(IPAddressFamilyChoices),
@ -263,12 +263,12 @@ class IPRangeFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
class IPAddressFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm): class IPAddressFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
model = IPAddress model = IPAddress
field_groups = [ fieldsets = (
['q', 'tag'], (None, ('q', 'tag')),
['parent', 'family', 'status', 'role', 'mask_length', 'assigned_to_interface'], ('Attributes', ('parent', 'family', 'status', 'role', 'mask_length', 'assigned_to_interface')),
['vrf_id', 'present_in_vrf_id'], ('VRF', ('vrf_id', 'present_in_vrf_id')),
['tenant_group_id', 'tenant_id'], ('Tenant', ('tenant_group_id', 'tenant_id')),
] )
parent = forms.CharField( parent = forms.CharField(
required=False, required=False,
widget=forms.TextInput( widget=forms.TextInput(
@ -323,10 +323,10 @@ class IPAddressFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
class FHRPGroupFilterForm(NetBoxModelFilterSetForm): class FHRPGroupFilterForm(NetBoxModelFilterSetForm):
model = FHRPGroup model = FHRPGroup
field_groups = ( fieldsets = (
('q', 'tag'), (None, ('q', 'tag')),
('protocol', 'group_id'), ('Attributes', ('protocol', 'group_id')),
('auth_type', 'auth_key'), ('Authentication', ('auth_type', 'auth_key')),
) )
protocol = forms.MultipleChoiceField( protocol = forms.MultipleChoiceField(
choices=FHRPGroupProtocolChoices, choices=FHRPGroupProtocolChoices,
@ -352,11 +352,11 @@ class FHRPGroupFilterForm(NetBoxModelFilterSetForm):
class VLANGroupFilterForm(NetBoxModelFilterSetForm): class VLANGroupFilterForm(NetBoxModelFilterSetForm):
field_groups = [ fieldsets = (
['q', 'tag'], (None, ('q', 'tag')),
['region', 'sitegroup', 'site', 'location', 'rack'], ('Location', ('region', 'sitegroup', 'site', 'location', 'rack')),
['min_vid', 'max_vid'], ('VLAN ID', ('min_vid', 'max_vid')),
] )
model = VLANGroup model = VLANGroup
region = DynamicModelMultipleChoiceField( region = DynamicModelMultipleChoiceField(
queryset=Region.objects.all(), queryset=Region.objects.all(),
@ -396,12 +396,12 @@ class VLANGroupFilterForm(NetBoxModelFilterSetForm):
class VLANFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm): class VLANFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
model = VLAN model = VLAN
field_groups = [ fieldsets = (
['q', 'tag'], (None, ('q', 'tag')),
['region_id', 'site_group_id', 'site_id'], ('Location', ('region_id', 'site_group_id', 'site_id')),
['group_id', 'status', 'role_id', 'vid'], ('Attributes', ('group_id', 'status', 'role_id', 'vid')),
['tenant_group_id', 'tenant_id'], ('Tenant', ('tenant_group_id', 'tenant_id')),
] )
region_id = DynamicModelMultipleChoiceField( region_id = DynamicModelMultipleChoiceField(
queryset=Region.objects.all(), queryset=Region.objects.all(),
required=False, required=False,
@ -450,9 +450,9 @@ class VLANFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
class ServiceTemplateFilterForm(NetBoxModelFilterSetForm): class ServiceTemplateFilterForm(NetBoxModelFilterSetForm):
model = ServiceTemplate model = ServiceTemplate
field_groups = ( fieldsets = (
('q', 'tag'), (None, ('q', 'tag')),
('protocol', 'port'), ('Attributes', ('protocol', 'port')),
) )
protocol = forms.ChoiceField( protocol = forms.ChoiceField(
choices=add_blank_choice(ServiceProtocolChoices), choices=add_blank_choice(ServiceProtocolChoices),

View File

@ -7,11 +7,13 @@
{% for field in filter_form.hidden_fields %} {% for field in filter_form.hidden_fields %}
{{ field }} {{ field }}
{% endfor %} {% endfor %}
{% if filter_form.field_groups %}
{# List filters by group #} {# List filters by group #}
{% for group in filter_form.field_groups %} {% for heading, fields in filter_form.fieldsets %}
<div class="col col-12"> <div class="col col-12">
{% for name in group %} {% if heading %}
<h6>{{ heading }}</h6>
{% endif %}
{% for name in fields %}
{% with field=filter_form|get_item:name %} {% with field=filter_form|get_item:name %}
{% render_field field %} {% render_field field %}
{% endwith %} {% endwith %}
@ -20,8 +22,7 @@
{% if not forloop.last %} {% if not forloop.last %}
<hr class="card-divider mt-0" /> <hr class="card-divider mt-0" />
{% endif %} {% endif %}
{% endfor %} {% empty %}
{% else %}
{# List all non-customfield filters as declared in the form class #} {# List all non-customfield filters as declared in the form class #}
{% for field in filter_form.visible_fields %} {% for field in filter_form.visible_fields %}
{% if not filter_form.custom_fields or field.name not in filter_form.custom_fields %} {% if not filter_form.custom_fields or field.name not in filter_form.custom_fields %}
@ -30,7 +31,7 @@
</div> </div>
{% endif %} {% endif %}
{% endfor %} {% endfor %}
{% endif %} {% endfor %}
{% if filter_form.custom_fields %} {% if filter_form.custom_fields %}
{# List all custom field filters #} {# List all custom field filters #}
<hr class="card-divider mt-0" /> <hr class="card-divider mt-0" />

View File

@ -29,10 +29,6 @@ class TenantGroupFilterForm(NetBoxModelFilterSetForm):
class TenantFilterForm(NetBoxModelFilterSetForm): class TenantFilterForm(NetBoxModelFilterSetForm):
model = Tenant model = Tenant
field_groups = (
('q', 'tag'),
('group_id',),
)
group_id = DynamicModelMultipleChoiceField( group_id = DynamicModelMultipleChoiceField(
queryset=TenantGroup.objects.all(), queryset=TenantGroup.objects.all(),
required=False, required=False,
@ -63,10 +59,6 @@ class ContactRoleFilterForm(NetBoxModelFilterSetForm):
class ContactFilterForm(NetBoxModelFilterSetForm): class ContactFilterForm(NetBoxModelFilterSetForm):
model = Contact model = Contact
field_groups = (
('q', 'tag'),
('group_id',),
)
group_id = DynamicModelMultipleChoiceField( group_id = DynamicModelMultipleChoiceField(
queryset=ContactGroup.objects.all(), queryset=ContactGroup.objects.all(),
required=False, required=False,

View File

@ -32,12 +32,12 @@ class ClusterGroupFilterForm(NetBoxModelFilterSetForm):
class ClusterFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm): class ClusterFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
model = Cluster model = Cluster
field_groups = [ fieldsets = (
['q', 'tag'], (None, ('q', 'tag')),
['group_id', 'type_id'], ('Attributes', ('group_id', 'type_id')),
['region_id', 'site_group_id', 'site_id'], ('Location', ('region_id', 'site_group_id', 'site_id')),
['tenant_group_id', 'tenant_id'], ('Tenant', ('tenant_group_id', 'tenant_id')),
] )
type_id = DynamicModelMultipleChoiceField( type_id = DynamicModelMultipleChoiceField(
queryset=ClusterType.objects.all(), queryset=ClusterType.objects.all(),
required=False, required=False,
@ -74,13 +74,13 @@ class ClusterFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
class VirtualMachineFilterForm(LocalConfigContextFilterForm, TenancyFilterForm, NetBoxModelFilterSetForm): class VirtualMachineFilterForm(LocalConfigContextFilterForm, TenancyFilterForm, NetBoxModelFilterSetForm):
model = VirtualMachine model = VirtualMachine
field_groups = [ fieldsets = (
['q', 'tag'], (None, ('q', 'tag')),
['cluster_group_id', 'cluster_type_id', 'cluster_id'], ('Cluster', ('cluster_group_id', 'cluster_type_id', 'cluster_id')),
['region_id', 'site_group_id', 'site_id'], ('Location', ('region_id', 'site_group_id', 'site_id')),
['status', 'role_id', 'platform_id', 'mac_address', 'has_primary_ip', 'local_context_data'], ('Attriubtes', ('status', 'role_id', 'platform_id', 'mac_address', 'has_primary_ip', 'local_context_data')),
['tenant_group_id', 'tenant_id'], ('Tenant', ('tenant_group_id', 'tenant_id')),
] )
cluster_group_id = DynamicModelMultipleChoiceField( cluster_group_id = DynamicModelMultipleChoiceField(
queryset=ClusterGroup.objects.all(), queryset=ClusterGroup.objects.all(),
required=False, required=False,
@ -154,11 +154,11 @@ class VirtualMachineFilterForm(LocalConfigContextFilterForm, TenancyFilterForm,
class VMInterfaceFilterForm(NetBoxModelFilterSetForm): class VMInterfaceFilterForm(NetBoxModelFilterSetForm):
model = VMInterface model = VMInterface
field_groups = [ fieldsets = (
['q', 'tag'], (None, ('q', 'tag')),
['cluster_id', 'virtual_machine_id'], ('Virtual Machine', ('cluster_id', 'virtual_machine_id')),
['enabled', 'mac_address'], ('Attributes', ('enabled', 'mac_address')),
] )
cluster_id = DynamicModelMultipleChoiceField( cluster_id = DynamicModelMultipleChoiceField(
queryset=Cluster.objects.all(), queryset=Cluster.objects.all(),
required=False, required=False,

View File

@ -26,10 +26,11 @@ class WirelessLANGroupFilterForm(NetBoxModelFilterSetForm):
class WirelessLANFilterForm(NetBoxModelFilterSetForm): class WirelessLANFilterForm(NetBoxModelFilterSetForm):
model = WirelessLAN model = WirelessLAN
field_groups = [ fieldsets = (
('q', 'tag'), (None, ('q', 'tag')),
('group_id',), ('Attributes', ('ssid', 'group_id',)),
] ('Authentication', ('auth_type', 'auth_cipher', 'auth_psk')),
)
ssid = forms.CharField( ssid = forms.CharField(
required=False, required=False,
label='SSID' label='SSID'