mirror of
https://github.com/lucaspalomodevelop/netbox-acls.git
synced 2026-03-12 23:27:23 +00:00
Merge pull request #34 from ryanmerolle/feature_33
add device to ACL relationship
This commit is contained in:
commit
dac1ab9f5c
@ -1,6 +1,7 @@
|
||||
from rest_framework import serializers
|
||||
|
||||
from ipam.api.serializers import NestedPrefixSerializer
|
||||
from dcim.api.serializers import NestedDeviceSerializer
|
||||
from netbox.api.serializers import NetBoxModelSerializer, WritableNestedSerializer
|
||||
from ..models import AccessList, AccessListRule
|
||||
|
||||
@ -16,7 +17,7 @@ class NestedAccessListSerializer(WritableNestedSerializer):
|
||||
|
||||
class Meta:
|
||||
model = AccessList
|
||||
fields = ('id', 'url', 'display', 'name')
|
||||
fields = ('id', 'url', 'display', 'name', 'device')
|
||||
|
||||
|
||||
class NestedAccessListRuleSerializer(WritableNestedSerializer):
|
||||
@ -38,11 +39,12 @@ class AccessListSerializer(NetBoxModelSerializer):
|
||||
view_name='plugins-api:netbox_access_lists-api:accesslist-detail'
|
||||
)
|
||||
rule_count = serializers.IntegerField(read_only=True)
|
||||
device = NestedDeviceSerializer()
|
||||
|
||||
class Meta:
|
||||
model = AccessList
|
||||
fields = (
|
||||
'id', 'url', 'display', 'name', 'type', 'default_action', 'comments', 'tags', 'custom_fields', 'created',
|
||||
'id', 'url', 'display', 'name', 'device', 'type', 'default_action', 'comments', 'tags', 'custom_fields', 'created',
|
||||
'last_updated', 'rule_count',
|
||||
)
|
||||
|
||||
|
||||
@ -7,7 +7,9 @@ from .serializers import AccessListSerializer, AccessListRuleSerializer
|
||||
|
||||
|
||||
class AccessListViewSet(NetBoxModelViewSet):
|
||||
queryset = models.AccessList.objects.prefetch_related('tags').annotate(
|
||||
queryset = models.AccessList.objects.prefetch_related(
|
||||
'device', 'tags'
|
||||
).annotate(
|
||||
rule_count=Count('rules')
|
||||
)
|
||||
serializer_class = AccessListSerializer
|
||||
|
||||
@ -5,7 +5,7 @@ from .models import AccessList, AccessListRule
|
||||
class AccessListFilterSet(NetBoxModelFilterSet):
|
||||
class Meta:
|
||||
model = AccessList
|
||||
fields = ('id', 'name', 'type', 'default_action', 'comments')
|
||||
fields = ('id', 'name', 'device', 'type', 'default_action', 'comments')
|
||||
|
||||
def search(self, queryset, name, value):
|
||||
return queryset.filter(description__icontains=value)
|
||||
|
||||
@ -16,7 +16,7 @@ class AccessListForm(NetBoxModelForm):
|
||||
|
||||
class Meta:
|
||||
model = AccessList
|
||||
fields = ('name', 'type', 'default_action', 'comments', 'tags')
|
||||
fields = ('name', 'device', 'type', 'default_action', 'comments', 'tags')
|
||||
|
||||
|
||||
class AccessListFilterForm(NetBoxModelFilterSetForm):
|
||||
|
||||
@ -23,13 +23,15 @@ class Migration(migrations.Migration):
|
||||
('last_updated', models.DateTimeField(auto_now=True, null=True)),
|
||||
('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)),
|
||||
('name', models.CharField(max_length=100)),
|
||||
('device', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='access_lists', to='dcim.device')),
|
||||
('type', models.CharField(max_length=100)),
|
||||
('default_action', models.CharField(max_length=30)),
|
||||
('comments', models.TextField(blank=True)),
|
||||
('tags', taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag')),
|
||||
],
|
||||
options={
|
||||
'ordering': ('name',),
|
||||
'ordering': ('name', 'device'),
|
||||
'unique_together': {('name', 'device')},
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
|
||||
@ -40,6 +40,11 @@ class AccessList(NetBoxModel):
|
||||
name = models.CharField(
|
||||
max_length=100
|
||||
)
|
||||
device = models.ForeignKey(
|
||||
to='dcim.Device',
|
||||
on_delete=models.CASCADE,
|
||||
related_name='access_lists'
|
||||
)
|
||||
type = models.CharField(
|
||||
max_length=30,
|
||||
choices=AccessListTypeChoices
|
||||
@ -54,7 +59,7 @@ class AccessList(NetBoxModel):
|
||||
)
|
||||
|
||||
class Meta:
|
||||
ordering = ('name',)
|
||||
ordering = ('name', 'device')
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
@ -8,6 +8,9 @@ class AccessListTable(NetBoxTable):
|
||||
name = tables.Column(
|
||||
linkify=True
|
||||
)
|
||||
device = tables.Column(
|
||||
linkify=True
|
||||
)
|
||||
type = ChoiceFieldColumn()
|
||||
default_action = ChoiceFieldColumn()
|
||||
rule_count = tables.Column()
|
||||
@ -17,8 +20,8 @@ class AccessListTable(NetBoxTable):
|
||||
|
||||
class Meta(NetBoxTable.Meta):
|
||||
model = AccessList
|
||||
fields = ('pk', 'id', 'name', 'type', 'rule_count', 'default_action', 'comments', 'actions', 'tags')
|
||||
default_columns = ('name', 'type', 'rule_count', 'default_action', 'tags')
|
||||
fields = ('pk', 'id', 'name', 'device', 'type', 'rule_count', 'default_action', 'comments', 'actions', 'tags')
|
||||
default_columns = ('name', 'device', 'type', 'rule_count', 'default_action', 'tags')
|
||||
|
||||
|
||||
class AccessListRuleTable(NetBoxTable):
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user