| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- from rest_framework import serializers
- from core.choices import *
- from core.models import *
- from netbox.api.fields import ChoiceField, ContentTypeField, RelatedObjectCountField
- from netbox.api.serializers import BaseModelSerializer, NetBoxModelSerializer
- from netbox.utils import get_data_backend_choices
- from users.api.nested_serializers import NestedUserSerializer
- from .nested_serializers import *
- __all__ = (
- 'DataFileSerializer',
- 'DataSourceSerializer',
- 'JobSerializer',
- )
- class DataSourceSerializer(NetBoxModelSerializer):
- url = serializers.HyperlinkedIdentityField(
- view_name='core-api:datasource-detail'
- )
- type = ChoiceField(
- choices=get_data_backend_choices()
- )
- status = ChoiceField(
- choices=DataSourceStatusChoices,
- read_only=True
- )
- # Related object counts
- file_count = RelatedObjectCountField('datafiles')
- class Meta:
- model = DataSource
- fields = [
- 'id', 'url', 'display', 'name', 'type', 'source_url', 'enabled', 'status', 'description', 'comments',
- 'parameters', 'ignore_rules', 'custom_fields', 'created', 'last_updated', 'file_count',
- ]
- brief_fields = ('id', 'url', 'display', 'name', 'description')
- class DataFileSerializer(NetBoxModelSerializer):
- url = serializers.HyperlinkedIdentityField(
- view_name='core-api:datafile-detail'
- )
- source = NestedDataSourceSerializer(
- read_only=True
- )
- class Meta:
- model = DataFile
- fields = [
- 'id', 'url', 'display', 'source', 'path', 'last_updated', 'size', 'hash',
- ]
- brief_fields = ('id', 'url', 'display', 'path')
- class JobSerializer(BaseModelSerializer):
- url = serializers.HyperlinkedIdentityField(view_name='core-api:job-detail')
- user = NestedUserSerializer(
- read_only=True
- )
- status = ChoiceField(choices=JobStatusChoices, read_only=True)
- object_type = ContentTypeField(
- read_only=True
- )
- class Meta:
- model = Job
- fields = [
- 'id', 'url', 'display', 'object_type', 'object_id', 'name', 'status', 'created', 'scheduled', 'interval',
- 'started', 'completed', 'user', 'data', 'error', 'job_id',
- ]
- brief_fields = ('url', 'created', 'completed', 'user', 'status')
|