diff --git a/netbox_access_lists/api/serializers.py b/netbox_access_lists/api/serializers.py index 3717793..2b885e3 100644 --- a/netbox_access_lists/api/serializers.py +++ b/netbox_access_lists/api/serializers.py @@ -69,8 +69,8 @@ class AccessListStandardRuleSerializer(NetBoxModelSerializer): class Meta: model = AccessListStandardRule fields = ( - 'id', 'url', 'display', 'access_list', 'index', 'source_prefix', 'action', - 'tags', 'custom_fields', 'created', 'last_updated' + 'id', 'url', 'display', 'access_list', 'index', 'action', 'tags', + 'created', 'custom_fields', 'last_updated', 'source_prefix' ) @@ -85,7 +85,7 @@ class AccessListExtendedRuleSerializer(NetBoxModelSerializer): class Meta: model = AccessListExtendedRule fields = ( - 'id', 'url', 'display', 'access_list', 'index', 'protocol', 'source_prefix', 'source_ports', - 'destination_prefix', 'destination_ports', 'action', 'tags', 'custom_fields', 'created', - 'last_updated' + 'id', 'url', 'display', 'access_list', 'index', 'action', 'tags', + 'created', 'custom_fields', 'last_updated', 'source_prefix', 'source_ports', + 'destination_prefix', 'destination_ports', 'protocol' ) diff --git a/netbox_access_lists/api/urls.py b/netbox_access_lists/api/urls.py index 358e620..411ee89 100644 --- a/netbox_access_lists/api/urls.py +++ b/netbox_access_lists/api/urls.py @@ -6,6 +6,7 @@ app_name = 'netbox_access_list' router = NetBoxRouter() router.register('access-lists', views.AccessListViewSet) -router.register('access-list-rules', views.AccessListExtendedRuleViewSet) +router.register('standard-acl-rules', views.AccessListStandardRuleViewSet) +router.register('extended-acl-rules', views.AccessListExtendedRuleViewSet) urlpatterns = router.urls diff --git a/netbox_access_lists/api/views.py b/netbox_access_lists/api/views.py index e0d4dd4..ead8156 100644 --- a/netbox_access_lists/api/views.py +++ b/netbox_access_lists/api/views.py @@ -18,7 +18,7 @@ class AccessListViewSet(NetBoxModelViewSet): class AccessListStandardRuleViewSet(NetBoxModelViewSet): queryset = models.AccessListStandardRule.objects.prefetch_related( - 'access_list', 'source_prefix', 'tags' + 'access_list', 'tags', 'source_prefix' ) serializer_class = AccessListStandardRuleSerializer filterset_class = filtersets.AccessListStandardRuleFilterSet @@ -26,7 +26,7 @@ class AccessListStandardRuleViewSet(NetBoxModelViewSet): class AccessListExtendedRuleViewSet(NetBoxModelViewSet): queryset = models.AccessListExtendedRule.objects.prefetch_related( - 'access_list', 'source_prefix', 'destination_prefix', 'tags' + 'access_list', 'tags', 'source_prefix', 'destination_prefix', ) serializer_class = AccessListExtendedRuleSerializer filterset_class = filtersets.AccessListExtendedRuleFilterSet diff --git a/netbox_access_lists/filtersets.py b/netbox_access_lists/filtersets.py index 5f76d81..f4bc50d 100644 --- a/netbox_access_lists/filtersets.py +++ b/netbox_access_lists/filtersets.py @@ -11,16 +11,6 @@ class AccessListFilterSet(NetBoxModelFilterSet): return queryset.filter(description__icontains=value) -class AccessListExtendedRuleFilterSet(NetBoxModelFilterSet): - - class Meta: - model = AccessListExtendedRule - fields = ('id', 'access_list', 'index', 'protocol', 'action', 'remark') - - def search(self, queryset, name, value): - return queryset.filter(description__icontains=value) - - class AccessListStandardRuleFilterSet(NetBoxModelFilterSet): class Meta: @@ -29,3 +19,13 @@ class AccessListStandardRuleFilterSet(NetBoxModelFilterSet): def search(self, queryset, name, value): return queryset.filter(description__icontains=value) + + +class AccessListExtendedRuleFilterSet(NetBoxModelFilterSet): + + class Meta: + model = AccessListExtendedRule + fields = ('id', 'access_list', 'index', 'action', 'remark', 'protocol') + + def search(self, queryset, name, value): + return queryset.filter(description__icontains=value) diff --git a/netbox_access_lists/forms.py b/netbox_access_lists/forms.py index a7f469f..fa42a56 100644 --- a/netbox_access_lists/forms.py +++ b/netbox_access_lists/forms.py @@ -34,57 +34,6 @@ class AccessListFilterForm(NetBoxModelFilterSetForm): tag = TagFilterField(model) -class AccessListExtendedRuleForm(NetBoxModelForm): - access_list = DynamicModelChoiceField( - queryset=AccessList.objects.all(), - query_params={ - 'type': 'extended' - } - ) - source_prefix = DynamicModelChoiceField( - queryset=Prefix.objects.all(), - required=False - ) - destination_prefix = DynamicModelChoiceField( - queryset=Prefix.objects.all(), - required=False - ) - tags = DynamicModelMultipleChoiceField( - queryset=Tag.objects.all(), - required=False - ) - - class Meta: - model = AccessListExtendedRule - fields = ( - 'access_list', 'index', 'remark', 'source_prefix', 'source_ports', 'destination_prefix', - 'destination_ports', 'protocol', 'action', 'tags' - ) - - -class AccessListExtendedRuleFilterForm(NetBoxModelFilterSetForm): - model = AccessListExtendedRule - access_list = forms.ModelMultipleChoiceField( - queryset=AccessList.objects.all(), - required=False, - widget=StaticSelectMultiple() - ) - index = forms.IntegerField( - required=False - ) - protocol = forms.MultipleChoiceField( - choices=AccessListProtocolChoices, - required=False, - widget=StaticSelectMultiple() - ) - action = forms.MultipleChoiceField( - choices=AccessListActionChoices, - required=False, - widget=StaticSelectMultiple() - ) - tag = TagFilterField(model) - - class AccessListStandardRuleForm(NetBoxModelForm): access_list = DynamicModelChoiceField( queryset=AccessList.objects.all(), @@ -92,19 +41,20 @@ class AccessListStandardRuleForm(NetBoxModelForm): 'type': 'standard' } ) - source_prefix = DynamicModelChoiceField( - queryset=Prefix.objects.all(), - required=False - ) tags = DynamicModelMultipleChoiceField( queryset=Tag.objects.all(), required=False ) + source_prefix = DynamicModelChoiceField( + queryset=Prefix.objects.all(), + required=False + ) + class Meta: model = AccessListStandardRule fields = ( - 'access_list', 'index', 'remark', 'source_prefix', 'action', 'tags' + 'access_list', 'index', 'remark', 'action', 'tags', 'source_prefix', ) @@ -118,9 +68,61 @@ class AccessListStandardRuleFilterForm(NetBoxModelFilterSetForm): index = forms.IntegerField( required=False ) + tag = TagFilterField(model) action = forms.MultipleChoiceField( choices=AccessListActionChoices, required=False, widget=StaticSelectMultiple() ) + + +class AccessListExtendedRuleForm(NetBoxModelForm): + access_list = DynamicModelChoiceField( + queryset=AccessList.objects.all(), + query_params={ + 'type': 'extended' + } + ) + tags = DynamicModelMultipleChoiceField( + queryset=Tag.objects.all(), + required=False + ) + source_prefix = DynamicModelChoiceField( + queryset=Prefix.objects.all(), + required=False + ) + destination_prefix = DynamicModelChoiceField( + queryset=Prefix.objects.all(), + required=False + ) + + + class Meta: + model = AccessListExtendedRule + fields = ( + 'access_list', 'index', 'remark', 'action', 'tags', 'source_prefix', + 'source_ports', 'destination_prefix', 'destination_ports', 'protocol' + ) + + +class AccessListExtendedRuleFilterForm(NetBoxModelFilterSetForm): + model = AccessListExtendedRule + access_list = forms.ModelMultipleChoiceField( + queryset=AccessList.objects.all(), + required=False, + widget=StaticSelectMultiple() + ) + index = forms.IntegerField( + required=False + ) tag = TagFilterField(model) + action = forms.MultipleChoiceField( + choices=AccessListActionChoices, + required=False, + widget=StaticSelectMultiple() + ) + protocol = forms.MultipleChoiceField( + choices=AccessListProtocolChoices, + required=False, + widget=StaticSelectMultiple() + ) diff --git a/netbox_access_lists/tables.py b/netbox_access_lists/tables.py index a89d5b4..5a5bf57 100644 --- a/netbox_access_lists/tables.py +++ b/netbox_access_lists/tables.py @@ -40,12 +40,13 @@ class AccessListStandardRuleTable(NetBoxTable): class Meta(NetBoxTable.Meta): model = AccessListStandardRule fields = ( - 'pk', 'id', 'access_list', 'index', 'source_prefix', 'action', 'remark', 'tags' + 'pk', 'id', 'access_list', 'index', 'action', 'actions', 'remark', 'tags' ) default_columns = ( - 'access_list', 'index', 'source_prefix', 'action', 'remark', 'tags' + 'access_list', 'index', 'action', 'actions', 'remark', 'tags' ) + class AccessListExtendedRuleTable(NetBoxTable): access_list = tables.Column( linkify=True @@ -53,19 +54,19 @@ class AccessListExtendedRuleTable(NetBoxTable): index = tables.Column( linkify=True ) - protocol = ChoiceFieldColumn() action = ChoiceFieldColumn() tags = columns.TagColumn( url_name='plugins:netbox_access_lists:accesslistextendedrule_list' ) + protocol = ChoiceFieldColumn() class Meta(NetBoxTable.Meta): model = AccessListExtendedRule fields = ( - 'pk', 'id', 'access_list', 'index', 'source_prefix', 'source_ports', 'destination_prefix', - 'destination_ports', 'protocol', 'action', 'remark', 'actions', 'tags' + 'pk', 'id', 'access_list', 'index', 'action', 'actions', 'remark', 'tags', + 'source_prefix', 'source_ports', 'destination_prefix', 'destination_ports', 'protocol' ) default_columns = ( - 'access_list', 'index', 'remark', 'source_prefix', 'source_ports', 'destination_prefix', - 'destination_ports', 'protocol', 'action', 'actions', 'tags' + 'access_list', 'index', 'action', 'actions', 'remark', 'tags', + 'source_prefix', 'source_ports', 'destination_prefix', 'destination_ports', 'protocol' )