diff --git a/netbox/circuits/forms.py b/netbox/circuits/forms.py index a1777bb16..4b9e949f8 100644 --- a/netbox/circuits/forms.py +++ b/netbox/circuits/forms.py @@ -62,6 +62,7 @@ class ProviderBulkEditForm(BootstrapMixin, CustomFieldBulkEditForm): class ProviderFilterForm(BootstrapMixin, CustomFieldFilterForm): model = Provider + q = forms.CharField(required=False, label='Search') site = FilterChoiceField(queryset=Site.objects.all(), to_field_name='slug') @@ -126,6 +127,7 @@ class CircuitBulkEditForm(BootstrapMixin, CustomFieldBulkEditForm): class CircuitFilterForm(BootstrapMixin, CustomFieldFilterForm): model = Circuit + q = forms.CharField(required=False, label='Search') type = FilterChoiceField(queryset=CircuitType.objects.annotate(filter_count=Count('circuits')), to_field_name='slug') provider = FilterChoiceField(queryset=Provider.objects.annotate(filter_count=Count('circuits')), diff --git a/netbox/dcim/forms.py b/netbox/dcim/forms.py index 95fb83892..9f6c7bde6 100644 --- a/netbox/dcim/forms.py +++ b/netbox/dcim/forms.py @@ -101,6 +101,7 @@ class SiteBulkEditForm(BootstrapMixin, CustomFieldBulkEditForm): class SiteFilterForm(BootstrapMixin, CustomFieldFilterForm): model = Site + q = forms.CharField(required=False, label='Search') tenant = FilterChoiceField(queryset=Tenant.objects.annotate(filter_count=Count('sites')), to_field_name='slug', null_option=(0, 'None')) @@ -232,6 +233,7 @@ class RackBulkEditForm(BootstrapMixin, CustomFieldBulkEditForm): class RackFilterForm(BootstrapMixin, CustomFieldFilterForm): model = Rack + q = forms.CharField(required=False, label='Search') site = FilterChoiceField(queryset=Site.objects.annotate(filter_count=Count('racks')), to_field_name='slug') group_id = FilterChoiceField(queryset=RackGroup.objects.select_related('site') .annotate(filter_count=Count('racks')), label='Rack group', null_option=(0, 'None')) @@ -281,6 +283,7 @@ class DeviceTypeBulkEditForm(BootstrapMixin, CustomFieldBulkEditForm): class DeviceTypeFilterForm(BootstrapMixin, CustomFieldFilterForm): model = DeviceType + q = forms.CharField(required=False, label='Search') manufacturer = FilterChoiceField(queryset=Manufacturer.objects.annotate(filter_count=Count('device_types')), to_field_name='slug') @@ -639,6 +642,7 @@ class DeviceBulkEditForm(BootstrapMixin, CustomFieldBulkEditForm): class DeviceFilterForm(BootstrapMixin, CustomFieldFilterForm): model = Device + q = forms.CharField(required=False, label='Search') site = FilterChoiceField( queryset=Site.objects.annotate(filter_count=Count('racks__devices')), to_field_name='slug', diff --git a/netbox/ipam/forms.py b/netbox/ipam/forms.py index 2f6f0af84..4b9d8ddf5 100644 --- a/netbox/ipam/forms.py +++ b/netbox/ipam/forms.py @@ -63,6 +63,7 @@ class VRFBulkEditForm(BootstrapMixin, CustomFieldBulkEditForm): class VRFFilterForm(BootstrapMixin, CustomFieldFilterForm): model = VRF + q = forms.CharField(required=False, label='Search') tenant = FilterChoiceField(queryset=Tenant.objects.annotate(filter_count=Count('vrfs')), to_field_name='slug', null_option=(0, None)) @@ -128,6 +129,7 @@ class AggregateBulkEditForm(BootstrapMixin, CustomFieldBulkEditForm): class AggregateFilterForm(BootstrapMixin, CustomFieldFilterForm): model = Aggregate + q = forms.CharField(required=False, label='Search') family = forms.ChoiceField(required=False, choices=IP_FAMILY_CHOICES, label='Address Family') rir = FilterChoiceField(queryset=RIR.objects.annotate(filter_count=Count('aggregates')), to_field_name='slug', label='RIR') @@ -256,8 +258,9 @@ def prefix_status_choices(): class PrefixFilterForm(BootstrapMixin, CustomFieldFilterForm): model = Prefix - parent = forms.CharField(required=False, label='Search Within', widget=forms.TextInput(attrs={ - 'placeholder': 'Network', + q = forms.CharField(required=False, label='Search') + parent = forms.CharField(required=False, label='Parent Prefix', widget=forms.TextInput(attrs={ + 'placeholder': 'Prefix', })) family = forms.ChoiceField(required=False, choices=IP_FAMILY_CHOICES, label='Address Family') vrf = FilterChoiceField(queryset=VRF.objects.annotate(filter_count=Count('prefixes')), to_field_name='rd', @@ -446,7 +449,8 @@ def ipaddress_status_choices(): class IPAddressFilterForm(BootstrapMixin, CustomFieldFilterForm): model = IPAddress - parent = forms.CharField(required=False, label='Search Within', widget=forms.TextInput(attrs={ + q = forms.CharField(required=False, label='Search') + parent = forms.CharField(required=False, label='Parent Prefix', widget=forms.TextInput(attrs={ 'placeholder': 'Prefix', })) family = forms.ChoiceField(required=False, choices=IP_FAMILY_CHOICES, label='Address Family') @@ -560,6 +564,7 @@ def vlan_status_choices(): class VLANFilterForm(BootstrapMixin, CustomFieldFilterForm): model = VLAN + q = forms.CharField(required=False, label='Search') site = FilterChoiceField(queryset=Site.objects.annotate(filter_count=Count('vlans')), to_field_name='slug') group_id = FilterChoiceField(queryset=VLANGroup.objects.annotate(filter_count=Count('vlans')), label='VLAN group', null_option=(0, 'None')) diff --git a/netbox/secrets/forms.py b/netbox/secrets/forms.py index 8012e2c55..b4c64b485 100644 --- a/netbox/secrets/forms.py +++ b/netbox/secrets/forms.py @@ -100,6 +100,7 @@ class SecretBulkEditForm(BootstrapMixin, BulkEditForm): class SecretFilterForm(BootstrapMixin, forms.Form): + q = forms.CharField(required=False, label='Search') role = FilterChoiceField(queryset=SecretRole.objects.annotate(filter_count=Count('secrets')), to_field_name='slug') diff --git a/netbox/templates/circuits/circuit_list.html b/netbox/templates/circuits/circuit_list.html index db6861b2e..63ee92f2d 100644 --- a/netbox/templates/circuits/circuit_list.html +++ b/netbox/templates/circuits/circuit_list.html @@ -24,7 +24,6 @@
{% include 'inc/search_panel.html' %} - {% include 'inc/filter_panel.html' %}
{% endblock %} diff --git a/netbox/templates/circuits/provider_list.html b/netbox/templates/circuits/provider_list.html index ca3dbfc09..36438d66b 100644 --- a/netbox/templates/circuits/provider_list.html +++ b/netbox/templates/circuits/provider_list.html @@ -23,7 +23,6 @@
{% include 'inc/search_panel.html' %} - {% include 'inc/filter_panel.html' %}
{% endblock %} diff --git a/netbox/templates/dcim/console_connections_list.html b/netbox/templates/dcim/console_connections_list.html index eb9531069..68b57dc27 100644 --- a/netbox/templates/dcim/console_connections_list.html +++ b/netbox/templates/dcim/console_connections_list.html @@ -19,7 +19,7 @@ {% render_table table 'table.html' %}
- {% include 'inc/filter_panel.html' %} + {% include 'inc/search_panel.html' %}
{% endblock %} diff --git a/netbox/templates/dcim/device_list.html b/netbox/templates/dcim/device_list.html index b543154ec..7b0984a69 100644 --- a/netbox/templates/dcim/device_list.html +++ b/netbox/templates/dcim/device_list.html @@ -24,7 +24,6 @@
{% include 'inc/search_panel.html' %} - {% include 'inc/filter_panel.html' %}
{% endblock %} diff --git a/netbox/templates/dcim/devicetype_list.html b/netbox/templates/dcim/devicetype_list.html index b8ce0e719..5ab97a481 100644 --- a/netbox/templates/dcim/devicetype_list.html +++ b/netbox/templates/dcim/devicetype_list.html @@ -19,7 +19,6 @@
{% include 'inc/search_panel.html' %} - {% include 'inc/filter_panel.html' %}
{% endblock %} diff --git a/netbox/templates/dcim/interface_connections_list.html b/netbox/templates/dcim/interface_connections_list.html index 56011af1d..23c7b8a9a 100644 --- a/netbox/templates/dcim/interface_connections_list.html +++ b/netbox/templates/dcim/interface_connections_list.html @@ -19,7 +19,7 @@ {% render_table table 'table.html' %}
- {% include 'inc/filter_panel.html' %} + {% include 'inc/search_panel.html' %}
{% endblock %} diff --git a/netbox/templates/dcim/power_connections_list.html b/netbox/templates/dcim/power_connections_list.html index 55c9e2ce5..1b6528d86 100644 --- a/netbox/templates/dcim/power_connections_list.html +++ b/netbox/templates/dcim/power_connections_list.html @@ -19,7 +19,7 @@ {% render_table table 'table.html' %}
- {% include 'inc/filter_panel.html' %} + {% include 'inc/search_panel.html' %}
{% endblock %} diff --git a/netbox/templates/dcim/rack_list.html b/netbox/templates/dcim/rack_list.html index 10ee4ff04..fa5371f6f 100644 --- a/netbox/templates/dcim/rack_list.html +++ b/netbox/templates/dcim/rack_list.html @@ -24,7 +24,6 @@
{% include 'inc/search_panel.html' %} - {% include 'inc/filter_panel.html' %}
{% endblock %} diff --git a/netbox/templates/dcim/rackgroup_list.html b/netbox/templates/dcim/rackgroup_list.html index 7b9b0677d..dee6472fb 100644 --- a/netbox/templates/dcim/rackgroup_list.html +++ b/netbox/templates/dcim/rackgroup_list.html @@ -18,7 +18,7 @@ {% include 'utilities/obj_table.html' with bulk_delete_url='dcim:rackgroup_bulk_delete' %}
- {% include 'inc/filter_panel.html' %} + {% include 'inc/search_panel.html' %}
{% endblock %} diff --git a/netbox/templates/dcim/site_list.html b/netbox/templates/dcim/site_list.html index 45169afe6..895f90804 100644 --- a/netbox/templates/dcim/site_list.html +++ b/netbox/templates/dcim/site_list.html @@ -23,7 +23,6 @@
{% include 'inc/search_panel.html' %} - {% include 'inc/filter_panel.html' %}
{% endblock %} diff --git a/netbox/templates/inc/filter_panel.html b/netbox/templates/inc/filter_panel.html deleted file mode 100644 index cde76a21c..000000000 --- a/netbox/templates/inc/filter_panel.html +++ /dev/null @@ -1,32 +0,0 @@ -{% load form_helpers %} - -{% if filter_form %} -
-
- - Filter -
-
-
- {% for field in filter_form %} -
- {% if field|widget_type == 'checkboxinput' %} - - {% else %} - {{ field.label_tag }} - {{ field }} - {% endif %} -
- {% endfor %} -
- - - Clear - -
-
-
-
-{% endif %} diff --git a/netbox/templates/inc/search_panel.html b/netbox/templates/inc/search_panel.html index 692ef3fd2..c49b60ac4 100644 --- a/netbox/templates/inc/search_panel.html +++ b/netbox/templates/inc/search_panel.html @@ -1,18 +1,39 @@ +{% load form_helpers %} +
Search
-
-
- - + + {% for field in filter_form %} +
+ {% if field.name == "q" %} +
+ + + + +
+ {% elif field|widget_type == 'checkboxinput' %} + + {% else %} + {{ field.label_tag }} + {{ field }} + {% endif %} +
+ {% endfor %} +
- -
+ + Clear + +
diff --git a/netbox/templates/ipam/aggregate_list.html b/netbox/templates/ipam/aggregate_list.html index aef7d84c1..f43274876 100644 --- a/netbox/templates/ipam/aggregate_list.html +++ b/netbox/templates/ipam/aggregate_list.html @@ -27,7 +27,6 @@
{% include 'inc/search_panel.html' %} - {% include 'inc/filter_panel.html' %}
{% endblock %} diff --git a/netbox/templates/ipam/ipaddress_list.html b/netbox/templates/ipam/ipaddress_list.html index 52391a2b4..bb442c824 100644 --- a/netbox/templates/ipam/ipaddress_list.html +++ b/netbox/templates/ipam/ipaddress_list.html @@ -25,7 +25,6 @@
{% include 'inc/search_panel.html' %} - {% include 'inc/filter_panel.html' %}
{% endblock %} diff --git a/netbox/templates/ipam/prefix_list.html b/netbox/templates/ipam/prefix_list.html index df790f9c6..10631ae27 100644 --- a/netbox/templates/ipam/prefix_list.html +++ b/netbox/templates/ipam/prefix_list.html @@ -34,7 +34,6 @@
{% include 'inc/search_panel.html' %} - {% include 'inc/filter_panel.html' %}
{% endblock %} diff --git a/netbox/templates/ipam/rir_list.html b/netbox/templates/ipam/rir_list.html index 4d71431a2..33bef6d99 100644 --- a/netbox/templates/ipam/rir_list.html +++ b/netbox/templates/ipam/rir_list.html @@ -33,7 +33,7 @@ {% endif %}
- {% include 'inc/filter_panel.html' %} + {% include 'inc/search_panel.html' %}
{% endblock %} diff --git a/netbox/templates/ipam/vlan_list.html b/netbox/templates/ipam/vlan_list.html index 78ad140ff..2db914721 100644 --- a/netbox/templates/ipam/vlan_list.html +++ b/netbox/templates/ipam/vlan_list.html @@ -25,7 +25,6 @@
{% include 'inc/search_panel.html' %} - {% include 'inc/filter_panel.html' %}
{% endblock %} diff --git a/netbox/templates/ipam/vlangroup_list.html b/netbox/templates/ipam/vlangroup_list.html index 1c8f92387..b6e1d4579 100644 --- a/netbox/templates/ipam/vlangroup_list.html +++ b/netbox/templates/ipam/vlangroup_list.html @@ -18,7 +18,7 @@ {% include 'utilities/obj_table.html' with bulk_delete_url='ipam:vlangroup_bulk_delete' %}
- {% include 'inc/filter_panel.html' %} + {% include 'inc/search_panel.html' %}
{% endblock %} diff --git a/netbox/templates/ipam/vrf_list.html b/netbox/templates/ipam/vrf_list.html index e5506bfaa..12f0b6bc3 100644 --- a/netbox/templates/ipam/vrf_list.html +++ b/netbox/templates/ipam/vrf_list.html @@ -25,7 +25,6 @@
{% include 'inc/search_panel.html' %} - {% include 'inc/filter_panel.html' %}
{% endblock %} diff --git a/netbox/templates/secrets/secret_list.html b/netbox/templates/secrets/secret_list.html index 70bdcf1f1..29657d3f3 100644 --- a/netbox/templates/secrets/secret_list.html +++ b/netbox/templates/secrets/secret_list.html @@ -19,7 +19,6 @@
{% include 'inc/search_panel.html' %} - {% include 'inc/filter_panel.html' %}
{% endblock %} diff --git a/netbox/templates/tenancy/tenant_list.html b/netbox/templates/tenancy/tenant_list.html index 529f01c76..81173b368 100644 --- a/netbox/templates/tenancy/tenant_list.html +++ b/netbox/templates/tenancy/tenant_list.html @@ -24,7 +24,6 @@
{% include 'inc/search_panel.html' %} - {% include 'inc/filter_panel.html' %}
{% endblock %} diff --git a/netbox/tenancy/forms.py b/netbox/tenancy/forms.py index bd98f2031..0e29a8495 100644 --- a/netbox/tenancy/forms.py +++ b/netbox/tenancy/forms.py @@ -55,5 +55,6 @@ class TenantBulkEditForm(BootstrapMixin, CustomFieldBulkEditForm): class TenantFilterForm(BootstrapMixin, CustomFieldFilterForm): model = Tenant + q = forms.CharField(required=False, label='Search') group = FilterChoiceField(queryset=TenantGroup.objects.annotate(filter_count=Count('tenants')), to_field_name='slug', null_option=(0, 'None'))