data.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. from core.choices import *
  2. from core.models import DataFile, DataSource
  3. from netbox.api.fields import ChoiceField, RelatedObjectCountField
  4. from netbox.api.serializers import NetBoxModelSerializer
  5. from netbox.utils import get_data_backend_choices
  6. __all__ = (
  7. 'DataFileSerializer',
  8. 'DataSourceSerializer',
  9. )
  10. class DataSourceSerializer(NetBoxModelSerializer):
  11. type = ChoiceField(
  12. choices=get_data_backend_choices()
  13. )
  14. status = ChoiceField(
  15. choices=DataSourceStatusChoices,
  16. read_only=True
  17. )
  18. # Related object counts
  19. file_count = RelatedObjectCountField('datafiles')
  20. class Meta:
  21. model = DataSource
  22. fields = [
  23. 'id', 'url', 'display_url', 'display', 'name', 'type', 'source_url', 'enabled', 'status', 'description',
  24. 'parameters', 'ignore_rules', 'comments', 'custom_fields', 'created', 'last_updated', 'last_synced',
  25. 'file_count',
  26. ]
  27. brief_fields = ('id', 'url', 'display', 'name', 'description')
  28. class DataFileSerializer(NetBoxModelSerializer):
  29. source = DataSourceSerializer(
  30. nested=True,
  31. read_only=True
  32. )
  33. class Meta:
  34. model = DataFile
  35. fields = [
  36. 'id', 'url', 'display_url', 'display', 'source', 'path', 'last_updated', 'size', 'hash',
  37. ]
  38. brief_fields = ('id', 'url', 'display', 'path')