2
0

nested_serializers.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import warnings
  2. from rest_framework import serializers
  3. from core.choices import JobStatusChoices
  4. from core.models import *
  5. from netbox.api.fields import ChoiceField
  6. from netbox.api.serializers import WritableNestedSerializer
  7. from users.api.serializers import UserSerializer
  8. __all__ = (
  9. 'NestedDataFileSerializer',
  10. 'NestedDataSourceSerializer',
  11. 'NestedJobSerializer',
  12. )
  13. # TODO: Remove in v4.2
  14. warnings.warn(
  15. f"Dedicated nested serializers will be removed in NetBox v4.2. Use Serializer(nested=True) instead.",
  16. DeprecationWarning
  17. )
  18. class NestedDataSourceSerializer(WritableNestedSerializer):
  19. class Meta:
  20. model = DataSource
  21. fields = ['id', 'url', 'display_url', 'display', 'name']
  22. class NestedDataFileSerializer(WritableNestedSerializer):
  23. class Meta:
  24. model = DataFile
  25. fields = ['id', 'url', 'display_url', 'display', 'path']
  26. class NestedJobSerializer(serializers.ModelSerializer):
  27. status = ChoiceField(choices=JobStatusChoices)
  28. user = UserSerializer(
  29. nested=True,
  30. read_only=True
  31. )
  32. class Meta:
  33. model = Job
  34. fields = ['url', 'display_url', 'created', 'completed', 'user', 'status']