From 99110b22260d76d994697da908e5ca36b4a416a6 Mon Sep 17 00:00:00 2001 From: ryanmerolle Date: Fri, 8 Jul 2022 01:56:04 +0000 Subject: [PATCH] working filter added to ACL --- netbox_access_lists/api/views.py | 1 + netbox_access_lists/filtersets.py | 11 ++++++++++- netbox_access_lists/forms.py | 14 +++++++++++++- netbox_access_lists/graphql.py | 1 + netbox_access_lists/views.py | 2 ++ 5 files changed, 27 insertions(+), 2 deletions(-) diff --git a/netbox_access_lists/api/views.py b/netbox_access_lists/api/views.py index b6112c9..8773eb3 100644 --- a/netbox_access_lists/api/views.py +++ b/netbox_access_lists/api/views.py @@ -11,6 +11,7 @@ class AccessListViewSet(NetBoxModelViewSet): rule_count=Count('rules') ) serializer_class = AccessListSerializer + filterset_class = filtersets.AccessListFilterSet class AccessListRuleViewSet(NetBoxModelViewSet): diff --git a/netbox_access_lists/filtersets.py b/netbox_access_lists/filtersets.py index d7645ab..e4232f7 100644 --- a/netbox_access_lists/filtersets.py +++ b/netbox_access_lists/filtersets.py @@ -1,5 +1,14 @@ from netbox.filtersets import NetBoxModelFilterSet -from .models import AccessListRule +from .models import AccessList, AccessListRule + + +class AccessListFilterSet(NetBoxModelFilterSet): + class Meta: + model = AccessList + fields = ('id', 'name', 'type', 'default_action', 'comments') + + def search(self, queryset, name, value): + return queryset.filter(description__icontains=value) class AccessListRuleFilterSet(NetBoxModelFilterSet): diff --git a/netbox_access_lists/forms.py b/netbox_access_lists/forms.py index 66e2aac..068b24a 100644 --- a/netbox_access_lists/forms.py +++ b/netbox_access_lists/forms.py @@ -3,7 +3,7 @@ from django import forms from ipam.models import Prefix from netbox.forms import NetBoxModelForm, NetBoxModelFilterSetForm from utilities.forms.fields import CommentField, DynamicModelChoiceField -from .models import AccessList, AccessListRule, ActionChoices, ProtocolChoices +from .models import AccessList, AccessListRule, ActionChoices, ProtocolChoices, TypeChoices class AccessListForm(NetBoxModelForm): @@ -14,6 +14,18 @@ class AccessListForm(NetBoxModelForm): fields = ('name', 'type', 'default_action', 'comments', 'tags') +class AccessListFilterForm(NetBoxModelFilterSetForm): + model = AccessList + type = forms.MultipleChoiceField( + choices=TypeChoices, + required=False + ) + default_action = forms.MultipleChoiceField( + choices=ActionChoices, + required=False + ) + + class AccessListRuleForm(NetBoxModelForm): access_list = DynamicModelChoiceField( queryset=AccessList.objects.all() diff --git a/netbox_access_lists/graphql.py b/netbox_access_lists/graphql.py index 6f9baf8..fe84a0b 100644 --- a/netbox_access_lists/graphql.py +++ b/netbox_access_lists/graphql.py @@ -13,6 +13,7 @@ class AccessListType(NetBoxObjectType): class Meta: model = models.AccessList fields = '__all__' + filterset_class = filtersets.AccessListFilterSet class AccessListRuleType(NetBoxObjectType): diff --git a/netbox_access_lists/views.py b/netbox_access_lists/views.py index f0755dd..39db83c 100644 --- a/netbox_access_lists/views.py +++ b/netbox_access_lists/views.py @@ -25,6 +25,8 @@ class AccessListListView(generic.ObjectListView): rule_count=Count('rules') ) table = tables.AccessListTable + filterset = filtersets.AccessListFilterSet + filterset_form = forms.AccessListFilterForm class AccessListEditView(generic.ObjectEditView):