mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
135 lines
4.2 KiB
Python
135 lines
4.2 KiB
Python
from rest_framework import serializers
|
|
|
|
from extras import models
|
|
from netbox.api.serializers import NestedTagSerializer, WritableNestedSerializer
|
|
|
|
__all__ = [
|
|
'NestedBookmarkSerializer',
|
|
'NestedConfigContextSerializer',
|
|
'NestedConfigTemplateSerializer',
|
|
'NestedCustomFieldChoiceSetSerializer',
|
|
'NestedCustomFieldSerializer',
|
|
'NestedCustomLinkSerializer',
|
|
'NestedEventRuleSerializer',
|
|
'NestedExportTemplateSerializer',
|
|
'NestedImageAttachmentSerializer',
|
|
'NestedJournalEntrySerializer',
|
|
'NestedSavedFilterSerializer',
|
|
'NestedScriptSerializer',
|
|
'NestedTagSerializer', # Defined in netbox.api.serializers
|
|
'NestedWebhookSerializer',
|
|
]
|
|
|
|
|
|
class NestedEventRuleSerializer(WritableNestedSerializer):
|
|
url = serializers.HyperlinkedIdentityField(view_name='extras-api:eventrule-detail')
|
|
|
|
class Meta:
|
|
model = models.EventRule
|
|
fields = ['id', 'url', 'display', 'name']
|
|
|
|
|
|
class NestedWebhookSerializer(WritableNestedSerializer):
|
|
url = serializers.HyperlinkedIdentityField(view_name='extras-api:webhook-detail')
|
|
|
|
class Meta:
|
|
model = models.Webhook
|
|
fields = ['id', 'url', 'display', 'name']
|
|
|
|
|
|
class NestedCustomFieldSerializer(WritableNestedSerializer):
|
|
url = serializers.HyperlinkedIdentityField(view_name='extras-api:customfield-detail')
|
|
|
|
class Meta:
|
|
model = models.CustomField
|
|
fields = ['id', 'url', 'display', 'name']
|
|
|
|
|
|
class NestedCustomFieldChoiceSetSerializer(WritableNestedSerializer):
|
|
url = serializers.HyperlinkedIdentityField(view_name='extras-api:customfieldchoiceset-detail')
|
|
|
|
class Meta:
|
|
model = models.CustomFieldChoiceSet
|
|
fields = ['id', 'url', 'display', 'name', 'choices_count']
|
|
|
|
|
|
class NestedCustomLinkSerializer(WritableNestedSerializer):
|
|
url = serializers.HyperlinkedIdentityField(view_name='extras-api:customlink-detail')
|
|
|
|
class Meta:
|
|
model = models.CustomLink
|
|
fields = ['id', 'url', 'display', 'name']
|
|
|
|
|
|
class NestedConfigContextSerializer(WritableNestedSerializer):
|
|
url = serializers.HyperlinkedIdentityField(view_name='extras-api:configcontext-detail')
|
|
|
|
class Meta:
|
|
model = models.ConfigContext
|
|
fields = ['id', 'url', 'display', 'name']
|
|
|
|
|
|
class NestedConfigTemplateSerializer(WritableNestedSerializer):
|
|
url = serializers.HyperlinkedIdentityField(view_name='extras-api:configtemplate-detail')
|
|
|
|
class Meta:
|
|
model = models.ConfigTemplate
|
|
fields = ['id', 'url', 'display', 'name']
|
|
|
|
|
|
class NestedExportTemplateSerializer(WritableNestedSerializer):
|
|
url = serializers.HyperlinkedIdentityField(view_name='extras-api:exporttemplate-detail')
|
|
|
|
class Meta:
|
|
model = models.ExportTemplate
|
|
fields = ['id', 'url', 'display', 'name']
|
|
|
|
|
|
class NestedSavedFilterSerializer(WritableNestedSerializer):
|
|
url = serializers.HyperlinkedIdentityField(view_name='extras-api:savedfilter-detail')
|
|
|
|
class Meta:
|
|
model = models.SavedFilter
|
|
fields = ['id', 'url', 'display', 'name', 'slug']
|
|
|
|
|
|
class NestedBookmarkSerializer(WritableNestedSerializer):
|
|
url = serializers.HyperlinkedIdentityField(view_name='extras-api:bookmark-detail')
|
|
|
|
class Meta:
|
|
model = models.Bookmark
|
|
fields = ['id', 'url', 'display', 'object_id', 'object_type']
|
|
|
|
|
|
class NestedImageAttachmentSerializer(WritableNestedSerializer):
|
|
url = serializers.HyperlinkedIdentityField(view_name='extras-api:imageattachment-detail')
|
|
|
|
class Meta:
|
|
model = models.ImageAttachment
|
|
fields = ['id', 'url', 'display', 'name', 'image']
|
|
|
|
|
|
class NestedJournalEntrySerializer(WritableNestedSerializer):
|
|
url = serializers.HyperlinkedIdentityField(view_name='extras-api:journalentry-detail')
|
|
|
|
class Meta:
|
|
model = models.JournalEntry
|
|
fields = ['id', 'url', 'display', 'created']
|
|
|
|
|
|
class NestedScriptSerializer(WritableNestedSerializer):
|
|
url = serializers.HyperlinkedIdentityField(
|
|
view_name='extras-api:script-detail',
|
|
lookup_field='full_name',
|
|
lookup_url_kwarg='pk'
|
|
)
|
|
name = serializers.CharField(read_only=True)
|
|
display = serializers.SerializerMethodField(read_only=True)
|
|
|
|
class Meta:
|
|
model = models.Script
|
|
fields = ['id', 'url', 'display', 'name']
|
|
|
|
def get_display(self, obj):
|
|
return f'{obj.name} ({obj.module})'
|