1from rest_framework import serializers 2 3from extras import choices, models 4from netbox.api import ChoiceField, WritableNestedSerializer 5from netbox.api.serializers import NestedTagSerializer 6from users.api.nested_serializers import NestedUserSerializer 7 8__all__ = [ 9 'NestedConfigContextSerializer', 10 'NestedCustomFieldSerializer', 11 'NestedCustomLinkSerializer', 12 'NestedExportTemplateSerializer', 13 'NestedImageAttachmentSerializer', 14 'NestedJobResultSerializer', 15 'NestedJournalEntrySerializer', 16 'NestedTagSerializer', # Defined in netbox.api.serializers 17 'NestedWebhookSerializer', 18] 19 20 21class NestedWebhookSerializer(WritableNestedSerializer): 22 url = serializers.HyperlinkedIdentityField(view_name='extras-api:webhook-detail') 23 24 class Meta: 25 model = models.Webhook 26 fields = ['id', 'url', 'display', 'name'] 27 28 29class NestedCustomFieldSerializer(WritableNestedSerializer): 30 url = serializers.HyperlinkedIdentityField(view_name='extras-api:customfield-detail') 31 32 class Meta: 33 model = models.CustomField 34 fields = ['id', 'url', 'display', 'name'] 35 36 37class NestedCustomLinkSerializer(WritableNestedSerializer): 38 url = serializers.HyperlinkedIdentityField(view_name='extras-api:customlink-detail') 39 40 class Meta: 41 model = models.CustomLink 42 fields = ['id', 'url', 'display', 'name'] 43 44 45class NestedConfigContextSerializer(WritableNestedSerializer): 46 url = serializers.HyperlinkedIdentityField(view_name='extras-api:configcontext-detail') 47 48 class Meta: 49 model = models.ConfigContext 50 fields = ['id', 'url', 'display', 'name'] 51 52 53class NestedExportTemplateSerializer(WritableNestedSerializer): 54 url = serializers.HyperlinkedIdentityField(view_name='extras-api:exporttemplate-detail') 55 56 class Meta: 57 model = models.ExportTemplate 58 fields = ['id', 'url', 'display', 'name'] 59 60 61class NestedImageAttachmentSerializer(WritableNestedSerializer): 62 url = serializers.HyperlinkedIdentityField(view_name='extras-api:imageattachment-detail') 63 64 class Meta: 65 model = models.ImageAttachment 66 fields = ['id', 'url', 'display', 'name', 'image'] 67 68 69class NestedJournalEntrySerializer(WritableNestedSerializer): 70 url = serializers.HyperlinkedIdentityField(view_name='extras-api:journalentry-detail') 71 72 class Meta: 73 model = models.JournalEntry 74 fields = ['id', 'url', 'display', 'created'] 75 76 77class NestedJobResultSerializer(serializers.ModelSerializer): 78 url = serializers.HyperlinkedIdentityField(view_name='extras-api:jobresult-detail') 79 status = ChoiceField(choices=choices.JobResultStatusChoices) 80 user = NestedUserSerializer( 81 read_only=True 82 ) 83 84 class Meta: 85 model = models.JobResult 86 fields = ['url', 'created', 'completed', 'user', 'status'] 87