from core.choices import * from core.models import DataFile, DataSource from netbox.api.fields import ChoiceField, RelatedObjectCountField from netbox.api.serializers import NetBoxModelSerializer from netbox.utils import get_data_backend_choices __all__ = ( 'DataFileSerializer', 'DataSourceSerializer', ) class DataSourceSerializer(NetBoxModelSerializer): 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_url', 'display', 'name', 'type', 'source_url', 'enabled', 'status', 'description', 'sync_interval', 'parameters', 'ignore_rules', 'comments', 'custom_fields', 'created', 'last_updated', 'last_synced', 'file_count', ] brief_fields = ('id', 'url', 'display', 'name', 'description') class DataFileSerializer(NetBoxModelSerializer): source = DataSourceSerializer( nested=True, read_only=True ) class Meta: model = DataFile fields = [ 'id', 'url', 'display_url', 'display', 'source', 'path', 'last_updated', 'size', 'hash', ] brief_fields = ('id', 'url', 'display', 'path')