mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-18 04:56:29 -06:00
#1344: Add missing object field to ContactAssignmentSerializer
This commit is contained in:
parent
96cde7d4af
commit
8bb9f4b8a2
@ -1,10 +1,12 @@
|
|||||||
from django.contrib.auth.models import ContentType
|
from django.contrib.auth.models import ContentType
|
||||||
|
from drf_yasg.utils import swagger_serializer_method
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
|
||||||
from netbox.api import ChoiceField, ContentTypeField
|
from netbox.api import ChoiceField, ContentTypeField
|
||||||
from netbox.api.serializers import NestedGroupModelSerializer, PrimaryModelSerializer
|
from netbox.api.serializers import NestedGroupModelSerializer, PrimaryModelSerializer
|
||||||
from tenancy.choices import ContactPriorityChoices
|
from tenancy.choices import ContactPriorityChoices
|
||||||
from tenancy.models import *
|
from tenancy.models import *
|
||||||
|
from utilities.api import get_serializer_for_model
|
||||||
from .nested_serializers import *
|
from .nested_serializers import *
|
||||||
|
|
||||||
|
|
||||||
@ -92,6 +94,7 @@ class ContactAssignmentSerializer(PrimaryModelSerializer):
|
|||||||
content_type = ContentTypeField(
|
content_type = ContentTypeField(
|
||||||
queryset=ContentType.objects.all()
|
queryset=ContentType.objects.all()
|
||||||
)
|
)
|
||||||
|
object = serializers.SerializerMethodField(read_only=True)
|
||||||
contact = NestedContactSerializer()
|
contact = NestedContactSerializer()
|
||||||
role = NestedContactRoleSerializer(required=False, allow_null=True)
|
role = NestedContactRoleSerializer(required=False, allow_null=True)
|
||||||
priority = ChoiceField(choices=ContactPriorityChoices, required=False)
|
priority = ChoiceField(choices=ContactPriorityChoices, required=False)
|
||||||
@ -99,6 +102,12 @@ class ContactAssignmentSerializer(PrimaryModelSerializer):
|
|||||||
class Meta:
|
class Meta:
|
||||||
model = ContactAssignment
|
model = ContactAssignment
|
||||||
fields = [
|
fields = [
|
||||||
'id', 'url', 'display', 'content_type', 'object_id', 'contact', 'role', 'priority', 'created',
|
'id', 'url', 'display', 'content_type', 'object_id', 'object', 'contact', 'role', 'priority', 'created',
|
||||||
'last_updated',
|
'last_updated',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@swagger_serializer_method(serializer_or_field=serializers.DictField)
|
||||||
|
def get_object(self, instance):
|
||||||
|
serializer = get_serializer_for_model(instance.content_type.model_class(), prefix='Nested')
|
||||||
|
context = {'request': self.context['request']}
|
||||||
|
return serializer(instance.object, context=context).data
|
||||||
|
@ -82,6 +82,6 @@ class ContactViewSet(CustomFieldModelViewSet):
|
|||||||
|
|
||||||
|
|
||||||
class ContactAssignmentViewSet(CustomFieldModelViewSet):
|
class ContactAssignmentViewSet(CustomFieldModelViewSet):
|
||||||
queryset = ContactAssignment.objects.prefetch_related('contact', 'role')
|
queryset = ContactAssignment.objects.prefetch_related('object', 'contact', 'role')
|
||||||
serializer_class = serializers.ContactAssignmentSerializer
|
serializer_class = serializers.ContactAssignmentSerializer
|
||||||
filterset_class = filtersets.ContactAssignmentFilterSet
|
filterset_class = filtersets.ContactAssignmentFilterSet
|
||||||
|
@ -190,4 +190,4 @@ class ContactAssignmentFilterSet(ChangeLoggedModelFilterSet):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = ContactAssignment
|
model = ContactAssignment
|
||||||
fields = ['id', 'content_type_id', 'priority']
|
fields = ['id', 'content_type_id', 'object_id', 'priority']
|
||||||
|
Loading…
Reference in New Issue
Block a user