mirror of
https://github.com/netbox-community/netbox.git
synced 2026-03-30 14:22:14 +02:00
* Establish GFKSerializerField and replace get_* methods in circuits.py * Set read_only=True * Apply GFKSerializerField to all matching SerializerMethodFields * Use GFKSerializerField for ObjectChangeSerializer.changed_object and EventRuleSerializer.action_object
This commit is contained in:
@@ -1,15 +1,13 @@
|
||||
from django.contrib.auth.models import ContentType
|
||||
from drf_spectacular.types import OpenApiTypes
|
||||
from drf_spectacular.utils import extend_schema_field
|
||||
from rest_framework import serializers
|
||||
|
||||
from netbox.api.fields import ChoiceField, ContentTypeField, SerializedPKRelatedField
|
||||
from netbox.api.gfk_fields import GFKSerializerField
|
||||
from netbox.api.serializers import (
|
||||
NestedGroupModelSerializer, NetBoxModelSerializer, OrganizationalModelSerializer, PrimaryModelSerializer,
|
||||
)
|
||||
from tenancy.choices import ContactPriorityChoices
|
||||
from tenancy.models import ContactAssignment, Contact, ContactGroup, ContactRole
|
||||
from utilities.api import get_serializer_for_model
|
||||
from .nested import NestedContactGroupSerializer
|
||||
|
||||
__all__ = (
|
||||
@@ -66,7 +64,7 @@ class ContactAssignmentSerializer(NetBoxModelSerializer):
|
||||
object_type = ContentTypeField(
|
||||
queryset=ContentType.objects.all()
|
||||
)
|
||||
object = serializers.SerializerMethodField(read_only=True)
|
||||
object = GFKSerializerField(read_only=True)
|
||||
contact = ContactSerializer(nested=True)
|
||||
role = ContactRoleSerializer(nested=True, required=False, allow_null=True)
|
||||
priority = ChoiceField(choices=ContactPriorityChoices, allow_blank=True, required=False, default=lambda: '')
|
||||
@@ -78,9 +76,3 @@ class ContactAssignmentSerializer(NetBoxModelSerializer):
|
||||
'tags', 'custom_fields', 'created', 'last_updated',
|
||||
]
|
||||
brief_fields = ('id', 'url', 'display', 'contact', 'role', 'priority')
|
||||
|
||||
@extend_schema_field(OpenApiTypes.OBJECT)
|
||||
def get_object(self, instance):
|
||||
serializer = get_serializer_for_model(instance.object_type.model_class())
|
||||
context = {'request': self.context['request']}
|
||||
return serializer(instance.object, nested=True, context=context).data
|
||||
|
||||
Reference in New Issue
Block a user