class RackFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterForm): model = Rack field_order = [ 'q', 'region_id', 'site_id', 'location_id', 'status', 'role_id', 'tenant_group_id', 'tenant_id' ] field_groups = [ ['q', 'tag'], ['region_id', 'site_id', 'location_id'], ['status', 'role_id'], ['type', 'width', 'serial', 'asset_tag'], ['tenant_group_id', 'tenant_id'], ] q = forms.CharField( required=False, widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), label=_('Search')) region_id = DynamicModelMultipleChoiceField(queryset=Region.objects.all(), required=False, label=_('Region'), fetch_trigger='open') site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), required=False, query_params={'region_id': '$region_id'}, label=_('Site'), fetch_trigger='open') location_id = DynamicModelMultipleChoiceField( queryset=Location.objects.all(), required=False, null_option='None', query_params={'site_id': '$site_id'}, label=_('Location'), fetch_trigger='open') status = forms.MultipleChoiceField(choices=RackStatusChoices, required=False, widget=StaticSelectMultiple()) type = forms.MultipleChoiceField(choices=RackTypeChoices, required=False, widget=StaticSelectMultiple()) width = forms.MultipleChoiceField(choices=RackWidthChoices, required=False, widget=StaticSelectMultiple()) role_id = DynamicModelMultipleChoiceField(queryset=RackRole.objects.all(), required=False, null_option='None', label=_('Role'), fetch_trigger='open') serial = forms.CharField(required=False) asset_tag = forms.CharField(required=False) tag = TagFilterField(model)
class ConsoleServerPortFilterForm(DeviceComponentFilterForm): model = ConsoleServerPort field_groups = [ ['q', 'tag'], ['name', 'label', 'type', 'speed'], ['region_id', 'site_group_id', 'site_id', 'location_id', 'device_id'], ] type = forms.MultipleChoiceField(choices=ConsolePortTypeChoices, required=False, widget=StaticSelectMultiple()) speed = forms.MultipleChoiceField(choices=ConsolePortSpeedChoices, required=False, widget=StaticSelectMultiple()) tag = TagFilterField(model)
class InterfaceFilterForm(DeviceComponentFilterForm): model = Interface field_groups = [ ['q', 'tag'], [ 'name', 'label', 'kind', 'type', 'enabled', 'mgmt_only', 'mac_address', 'wwn' ], ['rf_role', 'rf_channel', 'rf_channel_width', 'tx_power'], [ 'region_id', 'site_group_id', 'site_id', 'location_id', 'virtual_chassis_id', 'device_id' ], ] kind = forms.MultipleChoiceField(label='kind', choices=InterfaceKindChoices, required=False, widget=StaticSelectMultiple()) type = forms.MultipleChoiceField(label='Тип', choices=InterfaceTypeChoices, required=False, widget=StaticSelectMultiple()) enabled = forms.NullBooleanField( label='Включен', required=False, widget=StaticSelect(choices=BOOLEAN_WITH_BLANK_CHOICES)) mgmt_only = forms.NullBooleanField( label='mgmt_only', required=False, widget=StaticSelect(choices=BOOLEAN_WITH_BLANK_CHOICES)) mac_address = forms.CharField(required=False, label='MAC address') wwn = forms.CharField(required=False, label='WWN') rf_role = forms.MultipleChoiceField(choices=WirelessRoleChoices, required=False, widget=StaticSelectMultiple(), label='Wireless role') rf_channel = forms.MultipleChoiceField(choices=WirelessChannelChoices, required=False, widget=StaticSelectMultiple(), label='Wireless channel') rf_channel_frequency = forms.IntegerField(required=False, label='Channel frequency (MHz)') rf_channel_width = forms.IntegerField(required=False, label='Channel width (MHz)') tx_power = forms.IntegerField(required=False, label='Transmit power (dBm)', min_value=0, max_value=127) tag = TagFilterField(model)
class DeviceTypeFilterForm(CustomFieldModelFilterForm): model = DeviceType field_groups = [ ['q', 'tag'], ['manufacturer_id', 'subdevice_role', 'airflow'], [ 'console_ports', 'console_server_ports', 'power_ports', 'power_outlets', 'interfaces', 'pass_through_ports' ], ] manufacturer_id = DynamicModelMultipleChoiceField( queryset=Manufacturer.objects.all(), required=False, label='Manufacturer') subdevice_role = forms.MultipleChoiceField( label='subdevice_role', choices=add_blank_choice(SubdeviceRoleChoices), required=False, widget=StaticSelectMultiple()) airflow = forms.MultipleChoiceField( label='airflow', choices=add_blank_choice(DeviceAirflowChoices), required=False, widget=StaticSelectMultiple()) console_ports = forms.NullBooleanField( required=False, label='Has console ports', widget=StaticSelect(choices=BOOLEAN_WITH_BLANK_CHOICES)) console_server_ports = forms.NullBooleanField( required=False, label='Has console server ports', widget=StaticSelect(choices=BOOLEAN_WITH_BLANK_CHOICES)) power_ports = forms.NullBooleanField( required=False, label='Has power ports', widget=StaticSelect(choices=BOOLEAN_WITH_BLANK_CHOICES)) power_outlets = forms.NullBooleanField( required=False, label='Has power outlets', widget=StaticSelect(choices=BOOLEAN_WITH_BLANK_CHOICES)) interfaces = forms.NullBooleanField( required=False, label='Has interfaces', widget=StaticSelect(choices=BOOLEAN_WITH_BLANK_CHOICES)) pass_through_ports = forms.NullBooleanField( required=False, label='Has pass-through ports', widget=StaticSelect(choices=BOOLEAN_WITH_BLANK_CHOICES)) tag = TagFilterField(model)
class WebhookFilterForm(FilterForm): field_groups = [ ['q'], ['content_types', 'http_method', 'enabled'], ['type_create', 'type_update', 'type_delete'], ] content_types = ContentTypeMultipleChoiceField( queryset=ContentType.objects.all(), limit_choices_to=FeatureQuery('webhooks'), required=False) http_method = forms.MultipleChoiceField(choices=WebhookHttpMethodChoices, required=False, widget=StaticSelectMultiple(), label=_('HTTP method')) enabled = forms.NullBooleanField( required=False, widget=StaticSelect(choices=BOOLEAN_WITH_BLANK_CHOICES)) type_create = forms.NullBooleanField( required=False, widget=StaticSelect(choices=BOOLEAN_WITH_BLANK_CHOICES)) type_update = forms.NullBooleanField( required=False, widget=StaticSelect(choices=BOOLEAN_WITH_BLANK_CHOICES)) type_delete = forms.NullBooleanField( required=False, widget=StaticSelect(choices=BOOLEAN_WITH_BLANK_CHOICES))
class IPRangeFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterForm): model = IPRange field_groups = [ ['q', 'tag'], ['family', 'vrf_id', 'status', 'role_id'], ['tenant_group_id', 'tenant_id'], ] q = forms.CharField( required=False, widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), label=_('Search')) family = forms.ChoiceField( required=False, choices=add_blank_choice(IPAddressFamilyChoices), label=_('Address family'), widget=StaticSelect()) vrf_id = DynamicModelMultipleChoiceField(queryset=VRF.objects.all(), required=False, label=_('Assigned VRF'), null_option='Global', fetch_trigger='open') status = forms.MultipleChoiceField(choices=PrefixStatusChoices, required=False, widget=StaticSelectMultiple()) role_id = DynamicModelMultipleChoiceField(queryset=Role.objects.all(), required=False, null_option='None', label=_('Role'), fetch_trigger='open') tag = TagFilterField(model)
class WebhookFilterForm(BootstrapMixin, forms.Form): field_groups = [ ['q'], ['content_types', 'http_method', 'enabled'], ['type_create', 'type_update', 'type_delete'], ] q = forms.CharField( required=False, widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), label=_('Search')) content_types = ContentTypeMultipleChoiceField( queryset=ContentType.objects.all(), limit_choices_to=FeatureQuery('custom_fields'), required=False) http_method = forms.MultipleChoiceField(choices=WebhookHttpMethodChoices, required=False, widget=StaticSelectMultiple(), label=_('HTTP method')) enabled = forms.NullBooleanField( required=False, widget=StaticSelect(choices=BOOLEAN_WITH_BLANK_CHOICES)) type_create = forms.NullBooleanField( required=False, widget=StaticSelect(choices=BOOLEAN_WITH_BLANK_CHOICES)) type_update = forms.NullBooleanField( required=False, widget=StaticSelect(choices=BOOLEAN_WITH_BLANK_CHOICES)) type_delete = forms.NullBooleanField( required=False, widget=StaticSelect(choices=BOOLEAN_WITH_BLANK_CHOICES))
class SiteFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterForm): model = Site field_order = ['q', 'status', 'region_id', 'tenant_group_id', 'tenant_id'] field_groups = [ ['q', 'tag'], ['status', 'region_id', 'group_id'], ['tenant_group_id', 'tenant_id'], ] q = forms.CharField( required=False, widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), label=_('Search')) status = forms.MultipleChoiceField( choices=SiteStatusChoices, required=False, widget=StaticSelectMultiple(), ) region_id = DynamicModelMultipleChoiceField(queryset=Region.objects.all(), required=False, label=_('Region'), fetch_trigger='open') group_id = DynamicModelMultipleChoiceField( queryset=SiteGroup.objects.all(), required=False, label=_('Site group'), fetch_trigger='open') tag = TagFilterField(model)
class CircuitFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterForm): model = Circuit field_groups = [ ['q', 'tag'], ['provider_id', 'provider_network_id'], ['type_id', 'status', 'commit_rate'], ['region_id', 'site_group_id', 'site_id'], ['tenant_group_id', 'tenant_id'], ] q = forms.CharField( required=False, widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), label=_('Search')) type_id = DynamicModelMultipleChoiceField( queryset=CircuitType.objects.all(), required=False, label=_('Type'), fetch_trigger='open') provider_id = DynamicModelMultipleChoiceField( queryset=Provider.objects.all(), required=False, label=_('Provider'), fetch_trigger='open') provider_network_id = DynamicModelMultipleChoiceField( queryset=ProviderNetwork.objects.all(), required=False, query_params={'provider_id': '$provider_id'}, label=_('Provider network'), fetch_trigger='open') status = forms.MultipleChoiceField(choices=CircuitStatusChoices, required=False, widget=StaticSelectMultiple()) region_id = DynamicModelMultipleChoiceField(queryset=Region.objects.all(), required=False, label=_('Region'), fetch_trigger='open') site_group_id = DynamicModelMultipleChoiceField( queryset=SiteGroup.objects.all(), required=False, label=_('Site group'), fetch_trigger='open') site_id = DynamicModelMultipleChoiceField(queryset=Site.objects.all(), required=False, query_params={ 'region_id': '$region_id', 'site_group_id': '$site_group_id', }, label=_('Site'), fetch_trigger='open') commit_rate = forms.IntegerField(required=False, min_value=0, label=_('Commit rate (Kbps)')) tag = TagFilterField(model)
class IPAddressFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): model = IPAddress field_groups = [ ['q', 'tag'], [ 'parent', 'family', 'status', 'role', 'mask_length', 'assigned_to_interface' ], ['vrf_id', 'present_in_vrf_id'], ['tenant_group_id', 'tenant_id'], ] parent = forms.CharField(required=False, widget=forms.TextInput(attrs={ 'placeholder': 'Prefix', }), label='Parent Prefix') family = forms.ChoiceField( required=False, choices=add_blank_choice(IPAddressFamilyChoices), label=_('Address family'), widget=StaticSelect()) mask_length = forms.ChoiceField(required=False, choices=IPADDRESS_MASK_LENGTH_CHOICES, label=_('Mask length'), widget=StaticSelect()) vrf_id = DynamicModelMultipleChoiceField(queryset=VRF.objects.all(), required=False, label=_('Assigned VRF'), null_option='Global') present_in_vrf_id = DynamicModelChoiceField(queryset=VRF.objects.all(), required=False, label=_('Present in VRF')) status = forms.MultipleChoiceField(choices=IPAddressStatusChoices, required=False, widget=StaticSelectMultiple()) role = forms.MultipleChoiceField(choices=IPAddressRoleChoices, required=False, widget=StaticSelectMultiple()) assigned_to_interface = forms.NullBooleanField( required=False, label=_('Assigned to an interface'), widget=StaticSelect(choices=BOOLEAN_WITH_BLANK_CHOICES)) tag = TagFilterField(model)
class FHRPGroupFilterForm(CustomFieldModelFilterForm): model = FHRPGroup field_groups = ( ('q', 'tag'), ('protocol', 'group_id'), ('auth_type', 'auth_key'), ) protocol = forms.MultipleChoiceField(choices=FHRPGroupProtocolChoices, required=False, widget=StaticSelectMultiple()) group_id = forms.IntegerField(min_value=0, required=False, label='Group ID') auth_type = forms.MultipleChoiceField(choices=FHRPGroupAuthTypeChoices, required=False, widget=StaticSelectMultiple(), label='Authentication type') auth_key = forms.CharField(required=False, label='Authentication key') tag = TagFilterField(model)
class PowerFeedFilterForm(CustomFieldModelFilterForm): model = PowerFeed field_groups = [ ['q', 'tag'], ['region_id', 'site_group_id', 'site_id'], ['power_panel_id', 'rack_id'], [ 'status', 'type', 'supply', 'phase', 'voltage', 'amperage', 'max_utilization' ], ] region_id = DynamicModelMultipleChoiceField(queryset=Region.objects.all(), required=False, label='Region') site_group_id = DynamicModelMultipleChoiceField( queryset=SiteGroup.objects.all(), required=False, label='Site group') site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), required=False, query_params={'region_id': '$region_id'}, label='Site') power_panel_id = DynamicModelMultipleChoiceField( queryset=PowerPanel.objects.all(), required=False, null_option='None', query_params={'site_id': '$site_id'}, label='Power panel') rack_id = DynamicModelMultipleChoiceField( queryset=Rack.objects.all(), required=False, null_option='None', query_params={'site_id': '$site_id'}, label='Rack') status = forms.MultipleChoiceField(label='Статус', choices=PowerFeedStatusChoices, required=False, widget=StaticSelectMultiple()) type = forms.ChoiceField(label='Тип', choices=add_blank_choice(PowerFeedTypeChoices), required=False, widget=StaticSelect()) supply = forms.ChoiceField( label='Поставка', choices=add_blank_choice(PowerFeedSupplyChoices), required=False, widget=StaticSelect()) phase = forms.ChoiceField(label='Фаза', choices=add_blank_choice(PowerFeedPhaseChoices), required=False, widget=StaticSelect()) voltage = forms.IntegerField(label='Напряжение', required=False) amperage = forms.IntegerField(label='Ток', required=False) max_utilization = forms.IntegerField(label='max_utilization', required=False) tag = TagFilterField(model)
class RackFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): model = Rack field_groups = [ ['q', 'tag'], ['region_id', 'site_id', 'location_id'], ['status', 'role_id'], ['type', 'width', 'serial', 'asset_tag'], ['tenant_group_id', 'tenant_id'], ] region_id = DynamicModelMultipleChoiceField(queryset=Region.objects.all(), required=False, label='Region') site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), required=False, query_params={'region_id': '$region_id'}, label='Site') location_id = DynamicModelMultipleChoiceField( queryset=Location.objects.all(), required=False, null_option='None', query_params={'site_id': '$site_id'}, label='Location') status = forms.MultipleChoiceField(label='Статус', choices=RackStatusChoices, required=False, widget=StaticSelectMultiple()) type = forms.MultipleChoiceField(label='Тип', choices=RackTypeChoices, required=False, widget=StaticSelectMultiple()) width = forms.MultipleChoiceField(label='Ширина', choices=RackWidthChoices, required=False, widget=StaticSelectMultiple()) role_id = DynamicModelMultipleChoiceField(queryset=RackRole.objects.all(), required=False, null_option='None', label='Role') serial = forms.CharField(label='Серийный', required=False) asset_tag = forms.CharField(label='asset_tag', required=False) tag = TagFilterField(model)
class PowerOutletFilterForm(DeviceComponentFilterForm): model = PowerOutlet field_groups = [ ['q', 'tag'], ['name', 'label', 'type'], ['region_id', 'site_group_id', 'site_id', 'location_id', 'device_id'], ] type = forms.MultipleChoiceField(choices=PowerOutletTypeChoices, required=False, widget=StaticSelectMultiple()) tag = TagFilterField(model)
class FrontPortFilterForm(DeviceComponentFilterForm): field_groups = [ ['q', 'tag'], ['name', 'label', 'type', 'color'], ['region_id', 'site_group_id', 'site_id', 'location_id', 'device_id'], ] model = FrontPort type = forms.MultipleChoiceField(choices=PortTypeChoices, required=False, widget=StaticSelectMultiple()) color = ColorField(required=False) tag = TagFilterField(model)
class ServiceFilterForm(CustomFieldModelFilterForm): model = Service field_groups = ( ('q', 'tag'), ('protocol', 'port'), ) protocol = forms.ChoiceField( choices=add_blank_choice(ServiceProtocolChoices), required=False, widget=StaticSelectMultiple()) port = forms.IntegerField(required=False, ) tag = TagFilterField(model)
class Meta: model = Service fields = [ 'device', 'virtual_machine', 'name', 'protocol', 'ports', 'ipaddresses', 'description', 'tags', ] help_texts = { 'ipaddresses': "IP address assignment is optional. If no IPs are selected, the service is assumed to be " "reachable via all IPs assigned to the device.", } widgets = { 'protocol': StaticSelect(), 'ipaddresses': StaticSelectMultiple(), }
class InterfaceFilterForm(DeviceComponentFilterForm): model = Interface field_groups = [ ['q', 'tag'], [ 'name', 'label', 'kind', 'type', 'enabled', 'mgmt_only', 'mac_address' ], ['region_id', 'site_group_id', 'site_id', 'location_id', 'device_id'], ] kind = forms.MultipleChoiceField(choices=InterfaceKindChoices, required=False, widget=StaticSelectMultiple()) type = forms.MultipleChoiceField(choices=InterfaceTypeChoices, required=False, widget=StaticSelectMultiple()) enabled = forms.NullBooleanField( required=False, widget=StaticSelect(choices=BOOLEAN_WITH_BLANK_CHOICES)) mgmt_only = forms.NullBooleanField( required=False, widget=StaticSelect(choices=BOOLEAN_WITH_BLANK_CHOICES)) mac_address = forms.CharField(required=False, label='MAC address') tag = TagFilterField(model)
class DeviceTypeFilterForm(BootstrapMixin, CustomFieldModelFilterForm): model = DeviceType field_groups = [ ['q', 'tag'], ['manufacturer_id', 'subdevice_role'], [ 'console_ports', 'console_server_ports', 'power_ports', 'power_outlets', 'interfaces', 'pass_through_ports' ], ] q = forms.CharField( required=False, widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), label=_('Search')) manufacturer_id = DynamicModelMultipleChoiceField( queryset=Manufacturer.objects.all(), required=False, label=_('Manufacturer'), fetch_trigger='open') subdevice_role = forms.MultipleChoiceField( choices=add_blank_choice(SubdeviceRoleChoices), required=False, widget=StaticSelectMultiple()) console_ports = forms.NullBooleanField( required=False, label='Has console ports', widget=StaticSelect(choices=BOOLEAN_WITH_BLANK_CHOICES)) console_server_ports = forms.NullBooleanField( required=False, label='Has console server ports', widget=StaticSelect(choices=BOOLEAN_WITH_BLANK_CHOICES)) power_ports = forms.NullBooleanField( required=False, label='Has power ports', widget=StaticSelect(choices=BOOLEAN_WITH_BLANK_CHOICES)) power_outlets = forms.NullBooleanField( required=False, label='Has power outlets', widget=StaticSelect(choices=BOOLEAN_WITH_BLANK_CHOICES)) interfaces = forms.NullBooleanField( required=False, label='Has interfaces', widget=StaticSelect(choices=BOOLEAN_WITH_BLANK_CHOICES)) pass_through_ports = forms.NullBooleanField( required=False, label='Has pass-through ports', widget=StaticSelect(choices=BOOLEAN_WITH_BLANK_CHOICES)) tag = TagFilterField(model)
class ServiceFilterForm(BootstrapMixin, CustomFieldModelFilterForm): model = Service field_groups = ( ('q', 'tag'), ('protocol', 'port'), ) q = forms.CharField( required=False, widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), label=_('Search')) protocol = forms.ChoiceField( choices=add_blank_choice(ServiceProtocolChoices), required=False, widget=StaticSelectMultiple()) port = forms.IntegerField(required=False, ) tag = TagFilterField(model)
class RearPortFilterForm(DeviceComponentFilterForm): model = RearPort field_groups = [ ['q', 'tag'], ['name', 'label', 'type', 'color'], [ 'region_id', 'site_group_id', 'site_id', 'location_id', 'virtual_chassis_id', 'device_id' ], ] type = forms.MultipleChoiceField(label='Тип', choices=PortTypeChoices, required=False, widget=StaticSelectMultiple()) color = ColorField(label='Цвет', required=False) tag = TagFilterField(model)
class VLANFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterForm): model = VLAN field_groups = [ ['q', 'tag'], ['region_id', 'site_group_id', 'site_id'], ['group_id', 'status', 'role_id', 'vid'], ['tenant_group_id', 'tenant_id'], ] q = forms.CharField( required=False, widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), label=_('Search')) region_id = DynamicModelMultipleChoiceField(queryset=Region.objects.all(), required=False, label=_('Region'), fetch_trigger='open') site_group_id = DynamicModelMultipleChoiceField( queryset=SiteGroup.objects.all(), required=False, label=_('Site group'), fetch_trigger='open') site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), required=False, null_option='None', query_params={'region': '$region'}, label=_('Site'), fetch_trigger='open') group_id = DynamicModelMultipleChoiceField( queryset=VLANGroup.objects.all(), required=False, null_option='None', query_params={'region': '$region'}, label=_('VLAN group'), fetch_trigger='open') status = forms.MultipleChoiceField(choices=VLANStatusChoices, required=False, widget=StaticSelectMultiple()) role_id = DynamicModelMultipleChoiceField(queryset=Role.objects.all(), required=False, null_option='None', label=_('Role'), fetch_trigger='open') vid = forms.IntegerField(required=False, label='VLAN ID') tag = TagFilterField(model)
class CustomFieldFilterForm(FilterForm): field_groups = [ ['q'], ['type', 'content_types'], ['weight', 'required'], ] content_types = ContentTypeMultipleChoiceField( queryset=ContentType.objects.all(), limit_choices_to=FeatureQuery('custom_fields'), required=False) type = forms.MultipleChoiceField(choices=CustomFieldTypeChoices, required=False, widget=StaticSelectMultiple(), label=_('Field type')) weight = forms.IntegerField(required=False) required = forms.NullBooleanField( required=False, widget=StaticSelect(choices=BOOLEAN_WITH_BLANK_CHOICES))
class SiteFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): model = Site field_groups = [['q', 'tag'], ['status', 'region_id', 'group_id'], ['tenant_group_id', 'tenant_id'], ['asn_id']] status = forms.MultipleChoiceField( label='Статус', choices=SiteStatusChoices, required=False, widget=StaticSelectMultiple(), ) region_id = DynamicModelMultipleChoiceField(queryset=Region.objects.all(), required=False, label='Region') group_id = DynamicModelMultipleChoiceField( queryset=SiteGroup.objects.all(), required=False, label='Site group') asn_id = DynamicModelMultipleChoiceField(queryset=ASN.objects.all(), required=False, label='ASNs') tag = TagFilterField(model)
class CircuitFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): model = Circuit field_groups = [ ['q', 'tag'], ['provider_id', 'provider_network_id'], ['type_id', 'status', 'commit_rate'], ['region_id', 'site_group_id', 'site_id'], ['tenant_group_id', 'tenant_id'], ] type_id = DynamicModelMultipleChoiceField( queryset=CircuitType.objects.all(), required=False, label=_('Type')) provider_id = DynamicModelMultipleChoiceField( queryset=Provider.objects.all(), required=False, label=_('Provider')) provider_network_id = DynamicModelMultipleChoiceField( queryset=ProviderNetwork.objects.all(), required=False, query_params={'provider_id': '$provider_id'}, label=_('Provider network')) status = forms.MultipleChoiceField(choices=CircuitStatusChoices, required=False, widget=StaticSelectMultiple()) region_id = DynamicModelMultipleChoiceField(queryset=Region.objects.all(), required=False, label=_('Region')) site_group_id = DynamicModelMultipleChoiceField( queryset=SiteGroup.objects.all(), required=False, label=_('Site group')) site_id = DynamicModelMultipleChoiceField(queryset=Site.objects.all(), required=False, query_params={ 'region_id': '$region_id', 'site_group_id': '$site_group_id', }, label=_('Site')) commit_rate = forms.IntegerField(required=False, min_value=0, label=_('Commit rate (Kbps)')) tag = TagFilterField(model)
class ASNFilterForm(NetBoxModelFilterSetForm): model = ASN q = forms.CharField( required=False, label='Search' ) tenant = DynamicModelChoiceField( queryset=Tenant.objects.all(), required=False ) status = forms.MultipleChoiceField( choices=ASNStatusChoices, required=False, widget=StaticSelectMultiple() ) site = DynamicModelChoiceField( queryset=Site.objects.all(), required=False ) tag = TagFilterField(model)
class CustomFieldFilterForm(BootstrapMixin, forms.Form): field_groups = [ ['q'], ['type', 'content_types'], ['weight', 'required'], ] q = forms.CharField( required=False, widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), label=_('Search')) content_types = ContentTypeMultipleChoiceField( queryset=ContentType.objects.all(), limit_choices_to=FeatureQuery('custom_fields'), required=False) type = forms.MultipleChoiceField(choices=CustomFieldTypeChoices, required=False, widget=StaticSelectMultiple(), label=_('Field type')) weight = forms.IntegerField(required=False) required = forms.NullBooleanField( required=False, widget=StaticSelect(choices=BOOLEAN_WITH_BLANK_CHOICES))
class VLANFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): model = VLAN field_groups = [ ['q', 'tag'], ['region_id', 'site_group_id', 'site_id'], ['group_id', 'status', 'role_id', 'vid'], ['tenant_group_id', 'tenant_id'], ] region_id = DynamicModelMultipleChoiceField(queryset=Region.objects.all(), required=False, label=_('Region')) site_group_id = DynamicModelMultipleChoiceField( queryset=SiteGroup.objects.all(), required=False, label=_('Site group')) site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), required=False, null_option='None', query_params={'region': '$region'}, label=_('Site')) group_id = DynamicModelMultipleChoiceField( queryset=VLANGroup.objects.all(), required=False, null_option='None', query_params={'region': '$region'}, label=_('VLAN group')) status = forms.MultipleChoiceField(choices=VLANStatusChoices, required=False, widget=StaticSelectMultiple()) role_id = DynamicModelMultipleChoiceField(queryset=Role.objects.all(), required=False, null_option='None', label=_('Role')) vid = forms.IntegerField(required=False, label='VLAN ID') tag = TagFilterField(model)
class IPRangeFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): model = IPRange field_groups = [ ['q', 'tag'], ['family', 'vrf_id', 'status', 'role_id'], ['tenant_group_id', 'tenant_id'], ] family = forms.ChoiceField( required=False, choices=add_blank_choice(IPAddressFamilyChoices), label=_('Address family'), widget=StaticSelect()) vrf_id = DynamicModelMultipleChoiceField(queryset=VRF.objects.all(), required=False, label=_('Assigned VRF'), null_option='Global') status = forms.MultipleChoiceField(choices=PrefixStatusChoices, required=False, widget=StaticSelectMultiple()) role_id = DynamicModelMultipleChoiceField(queryset=Role.objects.all(), required=False, null_option='None', label=_('Role')) tag = TagFilterField(model)
class PrefixFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterForm): model = Prefix field_groups = [['q', 'tag'], [ 'within_include', 'family', 'status', 'role_id', 'mask_length', 'is_pool', 'mark_utilized' ], ['vrf_id', 'present_in_vrf_id'], ['region_id', 'site_group_id', 'site_id'], ['tenant_group_id', 'tenant_id']] q = forms.CharField( required=False, widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), label=_('Search')) mask_length__lte = forms.IntegerField(widget=forms.HiddenInput()) within_include = forms.CharField( required=False, widget=forms.TextInput(attrs={ 'placeholder': 'Prefix', }), label=_('Search within')) family = forms.ChoiceField( required=False, choices=add_blank_choice(IPAddressFamilyChoices), label=_('Address family'), widget=StaticSelect()) mask_length = forms.MultipleChoiceField(required=False, choices=PREFIX_MASK_LENGTH_CHOICES, label=_('Mask length'), widget=StaticSelectMultiple()) vrf_id = DynamicModelMultipleChoiceField(queryset=VRF.objects.all(), required=False, label=_('Assigned VRF'), null_option='Global', fetch_trigger='open') present_in_vrf_id = DynamicModelChoiceField(queryset=VRF.objects.all(), required=False, label=_('Present in VRF'), fetch_trigger='open') status = forms.MultipleChoiceField(choices=PrefixStatusChoices, required=False, widget=StaticSelectMultiple()) region_id = DynamicModelMultipleChoiceField(queryset=Region.objects.all(), required=False, label=_('Region'), fetch_trigger='open') site_group_id = DynamicModelMultipleChoiceField( queryset=SiteGroup.objects.all(), required=False, label=_('Site group'), fetch_trigger='open') site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), required=False, null_option='None', query_params={'region_id': '$region_id'}, label=_('Site'), fetch_trigger='open') role_id = DynamicModelMultipleChoiceField(queryset=Role.objects.all(), required=False, null_option='None', label=_('Role'), fetch_trigger='open') is_pool = forms.NullBooleanField( required=False, label=_('Is a pool'), widget=StaticSelect(choices=BOOLEAN_WITH_BLANK_CHOICES)) mark_utilized = forms.NullBooleanField( required=False, label=_('Marked as 100% utilized'), widget=StaticSelect(choices=BOOLEAN_WITH_BLANK_CHOICES)) tag = TagFilterField(model)