Coverage for core/api/serializers_/data.py: 100%
21 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-10 18:35 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-10 18:35 +0000
1from core.choices import *
2from core.models import DataFile, DataSource
3from netbox.api.fields import ChoiceField, RelatedObjectCountField
4from netbox.api.serializers import NetBoxModelSerializer, PrimaryModelSerializer
5from netbox.utils import get_data_backend_choices
7__all__ = (
8 'DataFileSerializer',
9 'DataSourceSerializer',
10)
13class DataSourceSerializer(PrimaryModelSerializer):
14 type = ChoiceField(
15 choices=get_data_backend_choices()
16 )
17 status = ChoiceField(
18 choices=DataSourceStatusChoices,
19 read_only=True
20 )
22 # Related object counts
23 file_count = RelatedObjectCountField('datafiles')
25 class Meta:
26 model = DataSource
27 fields = [
28 'id', 'url', 'display_url', 'display', 'name', 'type', 'source_url', 'enabled', 'status', 'description',
29 'sync_interval', 'parameters', 'ignore_rules', 'owner', 'comments', 'tags', 'custom_fields', 'created',
30 'last_updated', 'last_synced', 'file_count',
31 ]
32 brief_fields = ('id', 'url', 'display', 'name', 'description')
35class DataFileSerializer(NetBoxModelSerializer):
36 source = DataSourceSerializer(
37 nested=True,
38 read_only=True
39 )
41 class Meta:
42 model = DataFile
43 fields = [
44 'id', 'url', 'display_url', 'display', 'source', 'path', 'last_updated', 'size', 'hash',
45 ]
46 brief_fields = ('id', 'url', 'display', 'path')
47 read_only_fields = ['path', 'last_updated', 'size', 'hash']