Change VLANGroup site to scope (GFK)

This commit is contained in:
Jeremy Stretch
2021-03-09 14:13:50 -05:00
parent c6641ec1de
commit 4dae781be0
7 changed files with 169 additions and 59 deletions

View File

@@ -114,14 +114,20 @@ class RoleSerializer(OrganizationalModelSerializer):
class VLANGroupSerializer(OrganizationalModelSerializer):
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:vlangroup-detail')
site = NestedSiteSerializer(required=False, allow_null=True)
scope_type = ContentTypeField(
queryset=ContentType.objects.filter(
app_label='dcim',
model__in=['region', 'sitegroup', 'site', 'location', 'rack']
)
)
scope = serializers.SerializerMethodField(read_only=True)
vlan_count = serializers.IntegerField(read_only=True)
class Meta:
model = VLANGroup
fields = [
'id', 'url', 'name', 'slug', 'site', 'description', 'custom_fields', 'created', 'last_updated',
'vlan_count',
'id', 'url', 'name', 'slug', 'scope_type', 'scope_id', 'scope', 'description', 'custom_fields', 'created',
'last_updated', 'vlan_count',
]
validators = []
@@ -138,6 +144,14 @@ class VLANGroupSerializer(OrganizationalModelSerializer):
return data
def get_scope(self, obj):
if obj.scope_id is None:
return None
serializer = get_serializer_for_model(obj.scope, prefix='Nested')
context = {'request': self.context['request']}
return serializer(obj.scope, context=context).data
class VLANSerializer(TaggedObjectSerializer, CustomFieldModelSerializer):
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:vlan-detail')