mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Closes #7886: Introduce a base FilterForm class
This commit is contained in:
@ -23,11 +23,6 @@ class ProviderFilterForm(CustomFieldModelFilterForm):
|
|||||||
['region_id', 'site_group_id', 'site_id'],
|
['region_id', 'site_group_id', 'site_id'],
|
||||||
['asn'],
|
['asn'],
|
||||||
]
|
]
|
||||||
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,
|
||||||
@ -63,11 +58,6 @@ class ProviderNetworkFilterForm(CustomFieldModelFilterForm):
|
|||||||
('q', 'tag'),
|
('q', 'tag'),
|
||||||
('provider_id',),
|
('provider_id',),
|
||||||
)
|
)
|
||||||
q = forms.CharField(
|
|
||||||
required=False,
|
|
||||||
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
|
|
||||||
label=_('Search')
|
|
||||||
)
|
|
||||||
provider_id = DynamicModelMultipleChoiceField(
|
provider_id = DynamicModelMultipleChoiceField(
|
||||||
queryset=Provider.objects.all(),
|
queryset=Provider.objects.all(),
|
||||||
required=False,
|
required=False,
|
||||||
@ -79,11 +69,6 @@ class ProviderNetworkFilterForm(CustomFieldModelFilterForm):
|
|||||||
|
|
||||||
class CircuitTypeFilterForm(CustomFieldModelFilterForm):
|
class CircuitTypeFilterForm(CustomFieldModelFilterForm):
|
||||||
model = CircuitType
|
model = CircuitType
|
||||||
q = forms.CharField(
|
|
||||||
required=False,
|
|
||||||
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
|
|
||||||
label=_('Search')
|
|
||||||
)
|
|
||||||
tag = TagFilterField(model)
|
tag = TagFilterField(model)
|
||||||
|
|
||||||
|
|
||||||
@ -96,11 +81,6 @@ class CircuitFilterForm(TenancyFilterForm, CustomFieldModelFilterForm):
|
|||||||
['region_id', 'site_group_id', 'site_id'],
|
['region_id', 'site_group_id', 'site_id'],
|
||||||
['tenant_group_id', 'tenant_id'],
|
['tenant_group_id', 'tenant_id'],
|
||||||
]
|
]
|
||||||
q = forms.CharField(
|
|
||||||
required=False,
|
|
||||||
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
|
|
||||||
label=_('Search')
|
|
||||||
)
|
|
||||||
type_id = DynamicModelMultipleChoiceField(
|
type_id = DynamicModelMultipleChoiceField(
|
||||||
queryset=CircuitType.objects.all(),
|
queryset=CircuitType.objects.all(),
|
||||||
required=False,
|
required=False,
|
||||||
|
@ -9,7 +9,7 @@ from extras.forms import CustomFieldModelFilterForm, LocalConfigContextFilterFor
|
|||||||
from ipam.models import ASN
|
from ipam.models import ASN
|
||||||
from tenancy.forms import TenancyFilterForm
|
from tenancy.forms import TenancyFilterForm
|
||||||
from utilities.forms import (
|
from utilities.forms import (
|
||||||
APISelectMultiple, add_blank_choice, BootstrapMixin, ColorField, DynamicModelMultipleChoiceField, StaticSelect,
|
APISelectMultiple, add_blank_choice, ColorField, DynamicModelMultipleChoiceField, FilterForm, StaticSelect,
|
||||||
StaticSelectMultiple, TagFilterField, BOOLEAN_WITH_BLANK_CHOICES,
|
StaticSelectMultiple, TagFilterField, BOOLEAN_WITH_BLANK_CHOICES,
|
||||||
)
|
)
|
||||||
from wireless.choices import *
|
from wireless.choices import *
|
||||||
@ -51,11 +51,6 @@ class DeviceComponentFilterForm(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',
|
||||||
]
|
]
|
||||||
q = forms.CharField(
|
|
||||||
required=False,
|
|
||||||
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
|
|
||||||
label=_('Search')
|
|
||||||
)
|
|
||||||
name = forms.CharField(
|
name = forms.CharField(
|
||||||
required=False
|
required=False
|
||||||
)
|
)
|
||||||
@ -114,11 +109,6 @@ class DeviceComponentFilterForm(CustomFieldModelFilterForm):
|
|||||||
|
|
||||||
class RegionFilterForm(CustomFieldModelFilterForm):
|
class RegionFilterForm(CustomFieldModelFilterForm):
|
||||||
model = Region
|
model = Region
|
||||||
q = forms.CharField(
|
|
||||||
required=False,
|
|
||||||
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
|
|
||||||
label=_('Search')
|
|
||||||
)
|
|
||||||
parent_id = DynamicModelMultipleChoiceField(
|
parent_id = DynamicModelMultipleChoiceField(
|
||||||
queryset=Region.objects.all(),
|
queryset=Region.objects.all(),
|
||||||
required=False,
|
required=False,
|
||||||
@ -130,11 +120,6 @@ class RegionFilterForm(CustomFieldModelFilterForm):
|
|||||||
|
|
||||||
class SiteGroupFilterForm(CustomFieldModelFilterForm):
|
class SiteGroupFilterForm(CustomFieldModelFilterForm):
|
||||||
model = SiteGroup
|
model = SiteGroup
|
||||||
q = forms.CharField(
|
|
||||||
required=False,
|
|
||||||
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
|
|
||||||
label=_('Search')
|
|
||||||
)
|
|
||||||
parent_id = DynamicModelMultipleChoiceField(
|
parent_id = DynamicModelMultipleChoiceField(
|
||||||
queryset=SiteGroup.objects.all(),
|
queryset=SiteGroup.objects.all(),
|
||||||
required=False,
|
required=False,
|
||||||
@ -153,11 +138,6 @@ class SiteFilterForm(TenancyFilterForm, CustomFieldModelFilterForm):
|
|||||||
['tenant_group_id', 'tenant_id'],
|
['tenant_group_id', 'tenant_id'],
|
||||||
['asn_id']
|
['asn_id']
|
||||||
]
|
]
|
||||||
q = forms.CharField(
|
|
||||||
required=False,
|
|
||||||
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
|
|
||||||
label=_('Search')
|
|
||||||
)
|
|
||||||
status = forms.MultipleChoiceField(
|
status = forms.MultipleChoiceField(
|
||||||
choices=SiteStatusChoices,
|
choices=SiteStatusChoices,
|
||||||
required=False,
|
required=False,
|
||||||
@ -191,11 +171,6 @@ class LocationFilterForm(TenancyFilterForm, CustomFieldModelFilterForm):
|
|||||||
['region_id', 'site_group_id', 'site_id', 'parent_id'],
|
['region_id', 'site_group_id', 'site_id', 'parent_id'],
|
||||||
['tenant_group_id', 'tenant_id'],
|
['tenant_group_id', 'tenant_id'],
|
||||||
]
|
]
|
||||||
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,
|
||||||
@ -233,11 +208,6 @@ class LocationFilterForm(TenancyFilterForm, CustomFieldModelFilterForm):
|
|||||||
|
|
||||||
class RackRoleFilterForm(CustomFieldModelFilterForm):
|
class RackRoleFilterForm(CustomFieldModelFilterForm):
|
||||||
model = RackRole
|
model = RackRole
|
||||||
q = forms.CharField(
|
|
||||||
required=False,
|
|
||||||
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
|
|
||||||
label=_('Search')
|
|
||||||
)
|
|
||||||
tag = TagFilterField(model)
|
tag = TagFilterField(model)
|
||||||
|
|
||||||
|
|
||||||
@ -251,11 +221,6 @@ class RackFilterForm(TenancyFilterForm, CustomFieldModelFilterForm):
|
|||||||
['type', 'width', 'serial', 'asset_tag'],
|
['type', 'width', 'serial', 'asset_tag'],
|
||||||
['tenant_group_id', 'tenant_id'],
|
['tenant_group_id', 'tenant_id'],
|
||||||
]
|
]
|
||||||
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,
|
||||||
@ -338,11 +303,6 @@ class RackReservationFilterForm(TenancyFilterForm, CustomFieldModelFilterForm):
|
|||||||
['region_id', 'site_id', 'location_id'],
|
['region_id', 'site_id', 'location_id'],
|
||||||
['tenant_group_id', 'tenant_id'],
|
['tenant_group_id', 'tenant_id'],
|
||||||
]
|
]
|
||||||
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,
|
||||||
@ -379,11 +339,6 @@ class RackReservationFilterForm(TenancyFilterForm, CustomFieldModelFilterForm):
|
|||||||
|
|
||||||
class ManufacturerFilterForm(CustomFieldModelFilterForm):
|
class ManufacturerFilterForm(CustomFieldModelFilterForm):
|
||||||
model = Manufacturer
|
model = Manufacturer
|
||||||
q = forms.CharField(
|
|
||||||
required=False,
|
|
||||||
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
|
|
||||||
label=_('Search')
|
|
||||||
)
|
|
||||||
tag = TagFilterField(model)
|
tag = TagFilterField(model)
|
||||||
|
|
||||||
|
|
||||||
@ -394,11 +349,6 @@ class DeviceTypeFilterForm(CustomFieldModelFilterForm):
|
|||||||
['manufacturer_id', 'subdevice_role', 'airflow'],
|
['manufacturer_id', 'subdevice_role', 'airflow'],
|
||||||
['console_ports', 'console_server_ports', 'power_ports', 'power_outlets', 'interfaces', 'pass_through_ports'],
|
['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(
|
manufacturer_id = DynamicModelMultipleChoiceField(
|
||||||
queryset=Manufacturer.objects.all(),
|
queryset=Manufacturer.objects.all(),
|
||||||
required=False,
|
required=False,
|
||||||
@ -462,21 +412,11 @@ class DeviceTypeFilterForm(CustomFieldModelFilterForm):
|
|||||||
|
|
||||||
class DeviceRoleFilterForm(CustomFieldModelFilterForm):
|
class DeviceRoleFilterForm(CustomFieldModelFilterForm):
|
||||||
model = DeviceRole
|
model = DeviceRole
|
||||||
q = forms.CharField(
|
|
||||||
required=False,
|
|
||||||
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
|
|
||||||
label=_('Search')
|
|
||||||
)
|
|
||||||
tag = TagFilterField(model)
|
tag = TagFilterField(model)
|
||||||
|
|
||||||
|
|
||||||
class PlatformFilterForm(CustomFieldModelFilterForm):
|
class PlatformFilterForm(CustomFieldModelFilterForm):
|
||||||
model = Platform
|
model = Platform
|
||||||
q = forms.CharField(
|
|
||||||
required=False,
|
|
||||||
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
|
|
||||||
label=_('Search')
|
|
||||||
)
|
|
||||||
manufacturer_id = DynamicModelMultipleChoiceField(
|
manufacturer_id = DynamicModelMultipleChoiceField(
|
||||||
queryset=Manufacturer.objects.all(),
|
queryset=Manufacturer.objects.all(),
|
||||||
required=False,
|
required=False,
|
||||||
@ -503,11 +443,6 @@ class DeviceFilterForm(LocalConfigContextFilterForm, TenancyFilterForm, CustomFi
|
|||||||
'power_outlets', 'interfaces', 'pass_through_ports', 'local_context_data',
|
'power_outlets', 'interfaces', 'pass_through_ports', 'local_context_data',
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
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,
|
||||||
@ -666,11 +601,6 @@ class VirtualChassisFilterForm(TenancyFilterForm, CustomFieldModelFilterForm):
|
|||||||
['region_id', 'site_group_id', 'site_id'],
|
['region_id', 'site_group_id', 'site_id'],
|
||||||
['tenant_group_id', 'tenant_id'],
|
['tenant_group_id', 'tenant_id'],
|
||||||
]
|
]
|
||||||
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,
|
||||||
@ -704,11 +634,6 @@ class CableFilterForm(TenancyFilterForm, CustomFieldModelFilterForm):
|
|||||||
['type', 'status', 'color'],
|
['type', 'status', 'color'],
|
||||||
['tenant_group_id', 'tenant_id'],
|
['tenant_group_id', 'tenant_id'],
|
||||||
]
|
]
|
||||||
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,
|
||||||
@ -767,11 +692,6 @@ class PowerPanelFilterForm(CustomFieldModelFilterForm):
|
|||||||
('q', 'tag'),
|
('q', 'tag'),
|
||||||
('region_id', 'site_group_id', 'site_id', 'location_id')
|
('region_id', 'site_group_id', 'site_id', 'location_id')
|
||||||
)
|
)
|
||||||
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,
|
||||||
@ -815,11 +735,6 @@ class PowerFeedFilterForm(CustomFieldModelFilterForm):
|
|||||||
['power_panel_id', 'rack_id'],
|
['power_panel_id', 'rack_id'],
|
||||||
['status', 'type', 'supply', 'phase', 'voltage', 'amperage', 'max_utilization'],
|
['status', 'type', 'supply', 'phase', 'voltage', 'amperage', 'max_utilization'],
|
||||||
]
|
]
|
||||||
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,
|
||||||
@ -1112,12 +1027,7 @@ class InventoryItemFilterForm(DeviceComponentFilterForm):
|
|||||||
# Connections
|
# Connections
|
||||||
#
|
#
|
||||||
|
|
||||||
class ConsoleConnectionFilterForm(BootstrapMixin, forms.Form):
|
class ConsoleConnectionFilterForm(FilterForm):
|
||||||
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,
|
||||||
@ -1144,12 +1054,7 @@ class ConsoleConnectionFilterForm(BootstrapMixin, forms.Form):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class PowerConnectionFilterForm(BootstrapMixin, forms.Form):
|
class PowerConnectionFilterForm(FilterForm):
|
||||||
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,
|
||||||
@ -1176,12 +1081,7 @@ class PowerConnectionFilterForm(BootstrapMixin, forms.Form):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class InterfaceConnectionFilterForm(BootstrapMixin, forms.Form):
|
class InterfaceConnectionFilterForm(FilterForm):
|
||||||
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,
|
||||||
|
@ -4,7 +4,7 @@ from django.db.models import Q
|
|||||||
|
|
||||||
from extras.choices import *
|
from extras.choices import *
|
||||||
from extras.models import *
|
from extras.models import *
|
||||||
from utilities.forms import BootstrapMixin, BulkEditForm, CSVModelForm
|
from utilities.forms import BootstrapMixin, BulkEditForm, CSVModelForm, FilterForm
|
||||||
|
|
||||||
__all__ = (
|
__all__ = (
|
||||||
'CustomFieldModelCSVForm',
|
'CustomFieldModelCSVForm',
|
||||||
@ -105,7 +105,7 @@ class CustomFieldModelBulkEditForm(BulkEditForm):
|
|||||||
self.custom_fields.append(cf.name)
|
self.custom_fields.append(cf.name)
|
||||||
|
|
||||||
|
|
||||||
class CustomFieldModelFilterForm(BootstrapMixin, forms.Form):
|
class CustomFieldModelFilterForm(FilterForm):
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
|
|
||||||
|
@ -9,9 +9,8 @@ from extras.models import *
|
|||||||
from extras.utils import FeatureQuery
|
from extras.utils import FeatureQuery
|
||||||
from tenancy.models import Tenant, TenantGroup
|
from tenancy.models import Tenant, TenantGroup
|
||||||
from utilities.forms import (
|
from utilities.forms import (
|
||||||
add_blank_choice, APISelectMultiple, BootstrapMixin, ContentTypeChoiceField,
|
add_blank_choice, APISelectMultiple, ContentTypeChoiceField, ContentTypeMultipleChoiceField, DateTimePicker,
|
||||||
ContentTypeMultipleChoiceField, DateTimePicker, DynamicModelMultipleChoiceField, StaticSelect,
|
DynamicModelMultipleChoiceField, FilterForm, StaticSelect, StaticSelectMultiple, BOOLEAN_WITH_BLANK_CHOICES,
|
||||||
StaticSelectMultiple, BOOLEAN_WITH_BLANK_CHOICES,
|
|
||||||
)
|
)
|
||||||
from virtualization.models import Cluster, ClusterGroup
|
from virtualization.models import Cluster, ClusterGroup
|
||||||
|
|
||||||
@ -28,17 +27,12 @@ __all__ = (
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class CustomFieldFilterForm(BootstrapMixin, forms.Form):
|
class CustomFieldFilterForm(FilterForm):
|
||||||
field_groups = [
|
field_groups = [
|
||||||
['q'],
|
['q'],
|
||||||
['type', 'content_types'],
|
['type', 'content_types'],
|
||||||
['weight', 'required'],
|
['weight', 'required'],
|
||||||
]
|
]
|
||||||
q = forms.CharField(
|
|
||||||
required=False,
|
|
||||||
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
|
|
||||||
label=_('Search')
|
|
||||||
)
|
|
||||||
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'),
|
||||||
@ -61,16 +55,11 @@ class CustomFieldFilterForm(BootstrapMixin, forms.Form):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class CustomLinkFilterForm(BootstrapMixin, forms.Form):
|
class CustomLinkFilterForm(FilterForm):
|
||||||
field_groups = [
|
field_groups = [
|
||||||
['q'],
|
['q'],
|
||||||
['content_type', 'weight', 'new_window'],
|
['content_type', 'weight', 'new_window'],
|
||||||
]
|
]
|
||||||
q = forms.CharField(
|
|
||||||
required=False,
|
|
||||||
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
|
|
||||||
label=_('Search')
|
|
||||||
)
|
|
||||||
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'),
|
||||||
@ -87,16 +76,11 @@ class CustomLinkFilterForm(BootstrapMixin, forms.Form):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class ExportTemplateFilterForm(BootstrapMixin, forms.Form):
|
class ExportTemplateFilterForm(FilterForm):
|
||||||
field_groups = [
|
field_groups = [
|
||||||
['q'],
|
['q'],
|
||||||
['content_type', 'mime_type', 'file_extension', 'as_attachment'],
|
['content_type', 'mime_type', 'file_extension', 'as_attachment'],
|
||||||
]
|
]
|
||||||
q = forms.CharField(
|
|
||||||
required=False,
|
|
||||||
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
|
|
||||||
label=_('Search')
|
|
||||||
)
|
|
||||||
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'),
|
||||||
@ -117,17 +101,12 @@ class ExportTemplateFilterForm(BootstrapMixin, forms.Form):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class WebhookFilterForm(BootstrapMixin, forms.Form):
|
class WebhookFilterForm(FilterForm):
|
||||||
field_groups = [
|
field_groups = [
|
||||||
['q'],
|
['q'],
|
||||||
['content_types', 'http_method', 'enabled'],
|
['content_types', 'http_method', 'enabled'],
|
||||||
['type_create', 'type_update', 'type_delete'],
|
['type_create', 'type_update', 'type_delete'],
|
||||||
]
|
]
|
||||||
q = forms.CharField(
|
|
||||||
required=False,
|
|
||||||
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
|
|
||||||
label=_('Search')
|
|
||||||
)
|
|
||||||
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'),
|
||||||
@ -165,12 +144,8 @@ class WebhookFilterForm(BootstrapMixin, forms.Form):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class TagFilterForm(BootstrapMixin, forms.Form):
|
class TagFilterForm(FilterForm):
|
||||||
model = Tag
|
model = Tag
|
||||||
q = forms.CharField(
|
|
||||||
required=False,
|
|
||||||
label=_('Search')
|
|
||||||
)
|
|
||||||
content_type_id = ContentTypeMultipleChoiceField(
|
content_type_id = ContentTypeMultipleChoiceField(
|
||||||
queryset=ContentType.objects.filter(FeatureQuery('tags').get_query()),
|
queryset=ContentType.objects.filter(FeatureQuery('tags').get_query()),
|
||||||
required=False,
|
required=False,
|
||||||
@ -178,7 +153,7 @@ class TagFilterForm(BootstrapMixin, forms.Form):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class ConfigContextFilterForm(BootstrapMixin, forms.Form):
|
class ConfigContextFilterForm(FilterForm):
|
||||||
field_groups = [
|
field_groups = [
|
||||||
['q', 'tag'],
|
['q', 'tag'],
|
||||||
['region_id', 'site_group_id', 'site_id'],
|
['region_id', 'site_group_id', 'site_id'],
|
||||||
@ -186,11 +161,6 @@ class ConfigContextFilterForm(BootstrapMixin, forms.Form):
|
|||||||
['cluster_group_id', 'cluster_id'],
|
['cluster_group_id', 'cluster_id'],
|
||||||
['tenant_group_id', 'tenant_id']
|
['tenant_group_id', 'tenant_id']
|
||||||
]
|
]
|
||||||
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,
|
||||||
@ -270,18 +240,13 @@ class LocalConfigContextFilterForm(forms.Form):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class JournalEntryFilterForm(BootstrapMixin, forms.Form):
|
class JournalEntryFilterForm(FilterForm):
|
||||||
model = JournalEntry
|
model = JournalEntry
|
||||||
field_groups = [
|
field_groups = [
|
||||||
['q'],
|
['q'],
|
||||||
['created_before', 'created_after', 'created_by_id'],
|
['created_before', 'created_after', 'created_by_id'],
|
||||||
['assigned_object_type_id', 'kind']
|
['assigned_object_type_id', 'kind']
|
||||||
]
|
]
|
||||||
q = forms.CharField(
|
|
||||||
required=False,
|
|
||||||
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
|
|
||||||
label=_('Search')
|
|
||||||
)
|
|
||||||
created_after = forms.DateTimeField(
|
created_after = forms.DateTimeField(
|
||||||
required=False,
|
required=False,
|
||||||
label=_('After'),
|
label=_('After'),
|
||||||
@ -317,18 +282,13 @@ class JournalEntryFilterForm(BootstrapMixin, forms.Form):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class ObjectChangeFilterForm(BootstrapMixin, forms.Form):
|
class ObjectChangeFilterForm(FilterForm):
|
||||||
model = ObjectChange
|
model = ObjectChange
|
||||||
field_groups = [
|
field_groups = [
|
||||||
['q'],
|
['q'],
|
||||||
['time_before', 'time_after', 'action'],
|
['time_before', 'time_after', 'action'],
|
||||||
['user_id', 'changed_object_type_id'],
|
['user_id', 'changed_object_type_id'],
|
||||||
]
|
]
|
||||||
q = forms.CharField(
|
|
||||||
required=False,
|
|
||||||
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
|
|
||||||
label=_('Search')
|
|
||||||
)
|
|
||||||
time_after = forms.DateTimeField(
|
time_after = forms.DateTimeField(
|
||||||
required=False,
|
required=False,
|
||||||
label=_('After'),
|
label=_('After'),
|
||||||
|
@ -45,11 +45,6 @@ class VRFFilterForm(TenancyFilterForm, CustomFieldModelFilterForm):
|
|||||||
['import_target_id', 'export_target_id'],
|
['import_target_id', 'export_target_id'],
|
||||||
['tenant_group_id', 'tenant_id'],
|
['tenant_group_id', 'tenant_id'],
|
||||||
]
|
]
|
||||||
q = forms.CharField(
|
|
||||||
required=False,
|
|
||||||
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
|
|
||||||
label=_('Search')
|
|
||||||
)
|
|
||||||
import_target_id = DynamicModelMultipleChoiceField(
|
import_target_id = DynamicModelMultipleChoiceField(
|
||||||
queryset=RouteTarget.objects.all(),
|
queryset=RouteTarget.objects.all(),
|
||||||
required=False,
|
required=False,
|
||||||
@ -72,11 +67,6 @@ class RouteTargetFilterForm(TenancyFilterForm, CustomFieldModelFilterForm):
|
|||||||
['importing_vrf_id', 'exporting_vrf_id'],
|
['importing_vrf_id', 'exporting_vrf_id'],
|
||||||
['tenant_group_id', 'tenant_id'],
|
['tenant_group_id', 'tenant_id'],
|
||||||
]
|
]
|
||||||
q = forms.CharField(
|
|
||||||
required=False,
|
|
||||||
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
|
|
||||||
label=_('Search')
|
|
||||||
)
|
|
||||||
importing_vrf_id = DynamicModelMultipleChoiceField(
|
importing_vrf_id = DynamicModelMultipleChoiceField(
|
||||||
queryset=VRF.objects.all(),
|
queryset=VRF.objects.all(),
|
||||||
required=False,
|
required=False,
|
||||||
@ -94,11 +84,6 @@ class RouteTargetFilterForm(TenancyFilterForm, CustomFieldModelFilterForm):
|
|||||||
|
|
||||||
class RIRFilterForm(CustomFieldModelFilterForm):
|
class RIRFilterForm(CustomFieldModelFilterForm):
|
||||||
model = RIR
|
model = RIR
|
||||||
q = forms.CharField(
|
|
||||||
required=False,
|
|
||||||
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
|
|
||||||
label=_('Search')
|
|
||||||
)
|
|
||||||
is_private = forms.NullBooleanField(
|
is_private = forms.NullBooleanField(
|
||||||
required=False,
|
required=False,
|
||||||
label=_('Private'),
|
label=_('Private'),
|
||||||
@ -116,11 +101,6 @@ class AggregateFilterForm(TenancyFilterForm, CustomFieldModelFilterForm):
|
|||||||
['family', 'rir_id'],
|
['family', 'rir_id'],
|
||||||
['tenant_group_id', 'tenant_id']
|
['tenant_group_id', 'tenant_id']
|
||||||
]
|
]
|
||||||
q = forms.CharField(
|
|
||||||
required=False,
|
|
||||||
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
|
|
||||||
label=_('Search')
|
|
||||||
)
|
|
||||||
family = forms.ChoiceField(
|
family = forms.ChoiceField(
|
||||||
required=False,
|
required=False,
|
||||||
choices=add_blank_choice(IPAddressFamilyChoices),
|
choices=add_blank_choice(IPAddressFamilyChoices),
|
||||||
@ -144,11 +124,6 @@ class ASNFilterForm(TenancyFilterForm, CustomFieldModelFilterForm):
|
|||||||
['tenant_group_id', 'tenant_id'],
|
['tenant_group_id', 'tenant_id'],
|
||||||
['site_id'],
|
['site_id'],
|
||||||
]
|
]
|
||||||
q = forms.CharField(
|
|
||||||
required=False,
|
|
||||||
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
|
|
||||||
label=_('Search')
|
|
||||||
)
|
|
||||||
rir_id = DynamicModelMultipleChoiceField(
|
rir_id = DynamicModelMultipleChoiceField(
|
||||||
queryset=RIR.objects.all(),
|
queryset=RIR.objects.all(),
|
||||||
required=False,
|
required=False,
|
||||||
@ -165,11 +140,6 @@ class ASNFilterForm(TenancyFilterForm, CustomFieldModelFilterForm):
|
|||||||
|
|
||||||
class RoleFilterForm(CustomFieldModelFilterForm):
|
class RoleFilterForm(CustomFieldModelFilterForm):
|
||||||
model = Role
|
model = Role
|
||||||
q = forms.CharField(
|
|
||||||
required=False,
|
|
||||||
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
|
|
||||||
label=_('Search')
|
|
||||||
)
|
|
||||||
tag = TagFilterField(model)
|
tag = TagFilterField(model)
|
||||||
|
|
||||||
|
|
||||||
@ -182,11 +152,6 @@ class PrefixFilterForm(TenancyFilterForm, CustomFieldModelFilterForm):
|
|||||||
['region_id', 'site_group_id', 'site_id'],
|
['region_id', 'site_group_id', 'site_id'],
|
||||||
['tenant_group_id', 'tenant_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(
|
mask_length__lte = forms.IntegerField(
|
||||||
widget=forms.HiddenInput()
|
widget=forms.HiddenInput()
|
||||||
)
|
)
|
||||||
@ -282,11 +247,6 @@ class IPRangeFilterForm(TenancyFilterForm, CustomFieldModelFilterForm):
|
|||||||
['family', 'vrf_id', 'status', 'role_id'],
|
['family', 'vrf_id', 'status', 'role_id'],
|
||||||
['tenant_group_id', 'tenant_id'],
|
['tenant_group_id', 'tenant_id'],
|
||||||
]
|
]
|
||||||
q = forms.CharField(
|
|
||||||
required=False,
|
|
||||||
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
|
|
||||||
label=_('Search')
|
|
||||||
)
|
|
||||||
family = forms.ChoiceField(
|
family = forms.ChoiceField(
|
||||||
required=False,
|
required=False,
|
||||||
choices=add_blank_choice(IPAddressFamilyChoices),
|
choices=add_blank_choice(IPAddressFamilyChoices),
|
||||||
@ -327,11 +287,6 @@ class IPAddressFilterForm(TenancyFilterForm, CustomFieldModelFilterForm):
|
|||||||
['vrf_id', 'present_in_vrf_id'],
|
['vrf_id', 'present_in_vrf_id'],
|
||||||
['tenant_group_id', 'tenant_id'],
|
['tenant_group_id', 'tenant_id'],
|
||||||
]
|
]
|
||||||
q = forms.CharField(
|
|
||||||
required=False,
|
|
||||||
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
|
|
||||||
label=_('Search')
|
|
||||||
)
|
|
||||||
parent = forms.CharField(
|
parent = forms.CharField(
|
||||||
required=False,
|
required=False,
|
||||||
widget=forms.TextInput(
|
widget=forms.TextInput(
|
||||||
@ -393,11 +348,6 @@ class FHRPGroupFilterForm(CustomFieldModelFilterForm):
|
|||||||
('protocol', 'group_id'),
|
('protocol', 'group_id'),
|
||||||
('auth_type', 'auth_key'),
|
('auth_type', 'auth_key'),
|
||||||
)
|
)
|
||||||
q = forms.CharField(
|
|
||||||
required=False,
|
|
||||||
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
|
|
||||||
label=_('Search')
|
|
||||||
)
|
|
||||||
protocol = forms.MultipleChoiceField(
|
protocol = forms.MultipleChoiceField(
|
||||||
choices=FHRPGroupProtocolChoices,
|
choices=FHRPGroupProtocolChoices,
|
||||||
required=False,
|
required=False,
|
||||||
@ -427,11 +377,6 @@ class VLANGroupFilterForm(CustomFieldModelFilterForm):
|
|||||||
['region', 'sitegroup', 'site', 'location', 'rack']
|
['region', 'sitegroup', 'site', 'location', 'rack']
|
||||||
]
|
]
|
||||||
model = VLANGroup
|
model = VLANGroup
|
||||||
q = forms.CharField(
|
|
||||||
required=False,
|
|
||||||
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
|
|
||||||
label=_('Search')
|
|
||||||
)
|
|
||||||
region = DynamicModelMultipleChoiceField(
|
region = DynamicModelMultipleChoiceField(
|
||||||
queryset=Region.objects.all(),
|
queryset=Region.objects.all(),
|
||||||
required=False,
|
required=False,
|
||||||
@ -473,11 +418,6 @@ class VLANFilterForm(TenancyFilterForm, CustomFieldModelFilterForm):
|
|||||||
['group_id', 'status', 'role_id', 'vid'],
|
['group_id', 'status', 'role_id', 'vid'],
|
||||||
['tenant_group_id', 'tenant_id'],
|
['tenant_group_id', 'tenant_id'],
|
||||||
]
|
]
|
||||||
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,
|
||||||
@ -535,11 +475,6 @@ class ServiceFilterForm(CustomFieldModelFilterForm):
|
|||||||
('q', 'tag'),
|
('q', 'tag'),
|
||||||
('protocol', 'port'),
|
('protocol', 'port'),
|
||||||
)
|
)
|
||||||
q = forms.CharField(
|
|
||||||
required=False,
|
|
||||||
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
|
|
||||||
label=_('Search')
|
|
||||||
)
|
|
||||||
protocol = forms.ChoiceField(
|
protocol = forms.ChoiceField(
|
||||||
choices=add_blank_choice(ServiceProtocolChoices),
|
choices=add_blank_choice(ServiceProtocolChoices),
|
||||||
required=False,
|
required=False,
|
||||||
|
@ -20,11 +20,6 @@ __all__ = (
|
|||||||
|
|
||||||
class TenantGroupFilterForm(CustomFieldModelFilterForm):
|
class TenantGroupFilterForm(CustomFieldModelFilterForm):
|
||||||
model = TenantGroup
|
model = TenantGroup
|
||||||
q = forms.CharField(
|
|
||||||
required=False,
|
|
||||||
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
|
|
||||||
label=_('Search')
|
|
||||||
)
|
|
||||||
parent_id = DynamicModelMultipleChoiceField(
|
parent_id = DynamicModelMultipleChoiceField(
|
||||||
queryset=TenantGroup.objects.all(),
|
queryset=TenantGroup.objects.all(),
|
||||||
required=False,
|
required=False,
|
||||||
@ -40,11 +35,6 @@ class TenantFilterForm(CustomFieldModelFilterForm):
|
|||||||
('q', 'tag'),
|
('q', 'tag'),
|
||||||
('group_id',),
|
('group_id',),
|
||||||
)
|
)
|
||||||
q = forms.CharField(
|
|
||||||
required=False,
|
|
||||||
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
|
|
||||||
label=_('Search')
|
|
||||||
)
|
|
||||||
group_id = DynamicModelMultipleChoiceField(
|
group_id = DynamicModelMultipleChoiceField(
|
||||||
queryset=TenantGroup.objects.all(),
|
queryset=TenantGroup.objects.all(),
|
||||||
required=False,
|
required=False,
|
||||||
@ -61,11 +51,6 @@ class TenantFilterForm(CustomFieldModelFilterForm):
|
|||||||
|
|
||||||
class ContactGroupFilterForm(CustomFieldModelFilterForm):
|
class ContactGroupFilterForm(CustomFieldModelFilterForm):
|
||||||
model = ContactGroup
|
model = ContactGroup
|
||||||
q = forms.CharField(
|
|
||||||
required=False,
|
|
||||||
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
|
|
||||||
label=_('Search')
|
|
||||||
)
|
|
||||||
parent_id = DynamicModelMultipleChoiceField(
|
parent_id = DynamicModelMultipleChoiceField(
|
||||||
queryset=ContactGroup.objects.all(),
|
queryset=ContactGroup.objects.all(),
|
||||||
required=False,
|
required=False,
|
||||||
@ -77,11 +62,6 @@ class ContactGroupFilterForm(CustomFieldModelFilterForm):
|
|||||||
|
|
||||||
class ContactRoleFilterForm(CustomFieldModelFilterForm):
|
class ContactRoleFilterForm(CustomFieldModelFilterForm):
|
||||||
model = ContactRole
|
model = ContactRole
|
||||||
q = forms.CharField(
|
|
||||||
required=False,
|
|
||||||
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
|
|
||||||
label=_('Search')
|
|
||||||
)
|
|
||||||
tag = TagFilterField(model)
|
tag = TagFilterField(model)
|
||||||
|
|
||||||
|
|
||||||
@ -91,11 +71,6 @@ class ContactFilterForm(CustomFieldModelFilterForm):
|
|||||||
('q', 'tag'),
|
('q', 'tag'),
|
||||||
('group_id',),
|
('group_id',),
|
||||||
)
|
)
|
||||||
q = forms.CharField(
|
|
||||||
required=False,
|
|
||||||
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
|
|
||||||
label=_('Search')
|
|
||||||
)
|
|
||||||
group_id = DynamicModelMultipleChoiceField(
|
group_id = DynamicModelMultipleChoiceField(
|
||||||
queryset=ContactGroup.objects.all(),
|
queryset=ContactGroup.objects.all(),
|
||||||
required=False,
|
required=False,
|
||||||
|
@ -3,6 +3,7 @@ import re
|
|||||||
|
|
||||||
import yaml
|
import yaml
|
||||||
from django import forms
|
from django import forms
|
||||||
|
from django.utils.translation import gettext as _
|
||||||
|
|
||||||
from .widgets import APISelect, APISelectMultiple, ClearableFileInput, StaticSelect
|
from .widgets import APISelect, APISelectMultiple, ClearableFileInput, StaticSelect
|
||||||
|
|
||||||
@ -13,6 +14,7 @@ __all__ = (
|
|||||||
'BulkRenameForm',
|
'BulkRenameForm',
|
||||||
'ConfirmationForm',
|
'ConfirmationForm',
|
||||||
'CSVModelForm',
|
'CSVModelForm',
|
||||||
|
'FilterForm',
|
||||||
'ImportForm',
|
'ImportForm',
|
||||||
'ReturnURLForm',
|
'ReturnURLForm',
|
||||||
'TableConfigForm',
|
'TableConfigForm',
|
||||||
@ -177,6 +179,19 @@ class ImportForm(BootstrapMixin, forms.Form):
|
|||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
class FilterForm(BootstrapMixin, forms.Form):
|
||||||
|
"""
|
||||||
|
Base Form class for FilterSet forms.
|
||||||
|
"""
|
||||||
|
q = forms.CharField(
|
||||||
|
required=False,
|
||||||
|
widget=forms.TextInput(
|
||||||
|
attrs={'placeholder': _('All fields')}
|
||||||
|
),
|
||||||
|
label=_('Search')
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class TableConfigForm(BootstrapMixin, forms.Form):
|
class TableConfigForm(BootstrapMixin, forms.Form):
|
||||||
"""
|
"""
|
||||||
Form for configuring user's table preferences.
|
Form for configuring user's table preferences.
|
||||||
|
@ -5,8 +5,7 @@ from dcim.models import DeviceRole, Platform, Region, Site, SiteGroup
|
|||||||
from extras.forms import CustomFieldModelFilterForm, LocalConfigContextFilterForm
|
from extras.forms import CustomFieldModelFilterForm, LocalConfigContextFilterForm
|
||||||
from tenancy.forms import TenancyFilterForm
|
from tenancy.forms import TenancyFilterForm
|
||||||
from utilities.forms import (
|
from utilities.forms import (
|
||||||
BootstrapMixin, DynamicModelMultipleChoiceField, StaticSelect, StaticSelectMultiple, TagFilterField,
|
DynamicModelMultipleChoiceField, StaticSelect, StaticSelectMultiple, TagFilterField, BOOLEAN_WITH_BLANK_CHOICES,
|
||||||
BOOLEAN_WITH_BLANK_CHOICES,
|
|
||||||
)
|
)
|
||||||
from virtualization.choices import *
|
from virtualization.choices import *
|
||||||
from virtualization.models import *
|
from virtualization.models import *
|
||||||
@ -22,21 +21,11 @@ __all__ = (
|
|||||||
|
|
||||||
class ClusterTypeFilterForm(CustomFieldModelFilterForm):
|
class ClusterTypeFilterForm(CustomFieldModelFilterForm):
|
||||||
model = ClusterType
|
model = ClusterType
|
||||||
q = forms.CharField(
|
|
||||||
required=False,
|
|
||||||
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
|
|
||||||
label=_('Search')
|
|
||||||
)
|
|
||||||
tag = TagFilterField(model)
|
tag = TagFilterField(model)
|
||||||
|
|
||||||
|
|
||||||
class ClusterGroupFilterForm(CustomFieldModelFilterForm):
|
class ClusterGroupFilterForm(CustomFieldModelFilterForm):
|
||||||
model = ClusterGroup
|
model = ClusterGroup
|
||||||
q = forms.CharField(
|
|
||||||
required=False,
|
|
||||||
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
|
|
||||||
label=_('Search')
|
|
||||||
)
|
|
||||||
tag = TagFilterField(model)
|
tag = TagFilterField(model)
|
||||||
|
|
||||||
|
|
||||||
@ -51,11 +40,6 @@ class ClusterFilterForm(TenancyFilterForm, CustomFieldModelFilterForm):
|
|||||||
['region_id', 'site_group_id', 'site_id'],
|
['region_id', 'site_group_id', 'site_id'],
|
||||||
['tenant_group_id', 'tenant_id'],
|
['tenant_group_id', 'tenant_id'],
|
||||||
]
|
]
|
||||||
q = forms.CharField(
|
|
||||||
required=False,
|
|
||||||
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
|
|
||||||
label=_('Search')
|
|
||||||
)
|
|
||||||
type_id = DynamicModelMultipleChoiceField(
|
type_id = DynamicModelMultipleChoiceField(
|
||||||
queryset=ClusterType.objects.all(),
|
queryset=ClusterType.objects.all(),
|
||||||
required=False,
|
required=False,
|
||||||
@ -104,11 +88,6 @@ class VirtualMachineFilterForm(LocalConfigContextFilterForm, TenancyFilterForm,
|
|||||||
['status', 'role_id', 'platform_id', 'mac_address', 'has_primary_ip', 'local_context_data'],
|
['status', 'role_id', 'platform_id', 'mac_address', 'has_primary_ip', 'local_context_data'],
|
||||||
['tenant_group_id', 'tenant_id'],
|
['tenant_group_id', 'tenant_id'],
|
||||||
]
|
]
|
||||||
q = forms.CharField(
|
|
||||||
required=False,
|
|
||||||
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
|
|
||||||
label=_('Search')
|
|
||||||
)
|
|
||||||
cluster_group_id = DynamicModelMultipleChoiceField(
|
cluster_group_id = DynamicModelMultipleChoiceField(
|
||||||
queryset=ClusterGroup.objects.all(),
|
queryset=ClusterGroup.objects.all(),
|
||||||
required=False,
|
required=False,
|
||||||
@ -188,18 +167,13 @@ class VirtualMachineFilterForm(LocalConfigContextFilterForm, TenancyFilterForm,
|
|||||||
tag = TagFilterField(model)
|
tag = TagFilterField(model)
|
||||||
|
|
||||||
|
|
||||||
class VMInterfaceFilterForm(BootstrapMixin, forms.Form):
|
class VMInterfaceFilterForm(CustomFieldModelFilterForm):
|
||||||
model = VMInterface
|
model = VMInterface
|
||||||
field_groups = [
|
field_groups = [
|
||||||
['q', 'tag'],
|
['q', 'tag'],
|
||||||
['cluster_id', 'virtual_machine_id'],
|
['cluster_id', 'virtual_machine_id'],
|
||||||
['enabled', 'mac_address'],
|
['enabled', 'mac_address'],
|
||||||
]
|
]
|
||||||
q = forms.CharField(
|
|
||||||
required=False,
|
|
||||||
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
|
|
||||||
label=_('Search')
|
|
||||||
)
|
|
||||||
cluster_id = DynamicModelMultipleChoiceField(
|
cluster_id = DynamicModelMultipleChoiceField(
|
||||||
queryset=Cluster.objects.all(),
|
queryset=Cluster.objects.all(),
|
||||||
required=False,
|
required=False,
|
||||||
|
@ -16,11 +16,6 @@ __all__ = (
|
|||||||
|
|
||||||
class WirelessLANGroupFilterForm(CustomFieldModelFilterForm):
|
class WirelessLANGroupFilterForm(CustomFieldModelFilterForm):
|
||||||
model = WirelessLANGroup
|
model = WirelessLANGroup
|
||||||
q = forms.CharField(
|
|
||||||
required=False,
|
|
||||||
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
|
|
||||||
label=_('Search')
|
|
||||||
)
|
|
||||||
parent_id = DynamicModelMultipleChoiceField(
|
parent_id = DynamicModelMultipleChoiceField(
|
||||||
queryset=WirelessLANGroup.objects.all(),
|
queryset=WirelessLANGroup.objects.all(),
|
||||||
required=False,
|
required=False,
|
||||||
@ -36,11 +31,6 @@ class WirelessLANFilterForm(CustomFieldModelFilterForm):
|
|||||||
('q', 'tag'),
|
('q', 'tag'),
|
||||||
('group_id',),
|
('group_id',),
|
||||||
]
|
]
|
||||||
q = forms.CharField(
|
|
||||||
required=False,
|
|
||||||
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
|
|
||||||
label=_('Search')
|
|
||||||
)
|
|
||||||
ssid = forms.CharField(
|
ssid = forms.CharField(
|
||||||
required=False,
|
required=False,
|
||||||
label='SSID'
|
label='SSID'
|
||||||
@ -70,11 +60,6 @@ class WirelessLANFilterForm(CustomFieldModelFilterForm):
|
|||||||
|
|
||||||
class WirelessLinkFilterForm(CustomFieldModelFilterForm):
|
class WirelessLinkFilterForm(CustomFieldModelFilterForm):
|
||||||
model = WirelessLink
|
model = WirelessLink
|
||||||
q = forms.CharField(
|
|
||||||
required=False,
|
|
||||||
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
|
|
||||||
label=_('Search')
|
|
||||||
)
|
|
||||||
ssid = forms.CharField(
|
ssid = forms.CharField(
|
||||||
required=False,
|
required=False,
|
||||||
label='SSID'
|
label='SSID'
|
||||||
|
Reference in New Issue
Block a user