nested_serializers.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. from rest_framework import serializers
  2. from extras import choices, models
  3. from users.api.nested_serializers import NestedUserSerializer
  4. from utilities.api import ChoiceField, WritableNestedSerializer
  5. __all__ = [
  6. 'NestedConfigContextSerializer',
  7. 'NestedExportTemplateSerializer',
  8. 'NestedImageAttachmentSerializer',
  9. 'NestedJobResultSerializer',
  10. 'NestedTagSerializer',
  11. ]
  12. class NestedConfigContextSerializer(WritableNestedSerializer):
  13. url = serializers.HyperlinkedIdentityField(view_name='extras-api:configcontext-detail')
  14. class Meta:
  15. model = models.ConfigContext
  16. fields = ['id', 'url', 'name']
  17. class NestedExportTemplateSerializer(WritableNestedSerializer):
  18. url = serializers.HyperlinkedIdentityField(view_name='extras-api:exporttemplate-detail')
  19. class Meta:
  20. model = models.ExportTemplate
  21. fields = ['id', 'url', 'name']
  22. class NestedImageAttachmentSerializer(WritableNestedSerializer):
  23. url = serializers.HyperlinkedIdentityField(view_name='extras-api:imageattachment-detail')
  24. class Meta:
  25. model = models.ImageAttachment
  26. fields = ['id', 'url', 'name', 'image']
  27. class NestedTagSerializer(WritableNestedSerializer):
  28. url = serializers.HyperlinkedIdentityField(view_name='extras-api:tag-detail')
  29. class Meta:
  30. model = models.Tag
  31. fields = ['id', 'url', 'name', 'slug', 'color']
  32. class NestedJobResultSerializer(serializers.ModelSerializer):
  33. url = serializers.HyperlinkedIdentityField(view_name='extras-api:jobresult-detail')
  34. status = ChoiceField(choices=choices.JobResultStatusChoices)
  35. user = NestedUserSerializer(
  36. read_only=True
  37. )
  38. class Meta:
  39. model = models.JobResult
  40. fields = ['url', 'created', 'completed', 'user', 'status']