serializers.py 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. # coding=utf-8
  2. from django.conf import settings
  3. from rest_framework import serializers
  4. from apps.account.models import User
  5. from apps.tenant.repair_order.models import RepairOrder, RepairOrderRecord, RepairOrderComment
  6. from apps.upload.serializers import UploadSerializer
  7. from utils.serializersfield import DelayTimeCharField
  8. class RepairOrderDetailSerializer(serializers.ModelSerializer):
  9. status_text = serializers.CharField(source='get_status_display', read_only=True)
  10. user_id = serializers.CharField(source='user.id', read_only=True)
  11. images = serializers.SerializerMethodField()
  12. voice = serializers.SerializerMethodField()
  13. repair_type_name = serializers.CharField(source='repair_type.name', read_only=True)
  14. create_at = DelayTimeCharField(source='create_time', read_only=True)
  15. def get_images(self, obj):
  16. return UploadSerializer(obj.images, many=True).data
  17. def get_voice(self, obj):
  18. return UploadSerializer(obj.voice, many=True).data
  19. class Meta:
  20. model = RepairOrder
  21. fields = (
  22. 'id', 'status_text', 'status', 'no', 'fault_des', 'tel', 'name', 'create_at', 'device_address',
  23. 'repair_type_name', 'images', 'user_id','voice')
  24. class RepairOrderListSerializer(serializers.ModelSerializer):
  25. status_text = serializers.CharField(source='get_status_display', read_only=True)
  26. images = serializers.SerializerMethodField()
  27. user_id = serializers.CharField(source='user.id', read_only=True)
  28. repair_type_name = serializers.CharField(source='repair_type.name', read_only=True)
  29. create_at = DelayTimeCharField(source='create_time', read_only=True)
  30. start = serializers.SerializerMethodField()
  31. def get_start(self, obj):
  32. if obj.status == settings.APPRAISE:
  33. repair_order_comment = RepairOrderComment.objects.filter(repair_order=obj).first()
  34. if repair_order_comment:
  35. return repair_order_comment.start
  36. return 0
  37. def get_images(self, obj):
  38. return UploadSerializer(obj.images, many=True).data
  39. class Meta:
  40. model = RepairOrder
  41. fields = (
  42. 'id', 'status_text', 'no', 'fault_des', 'create_at', 'device_address','repair_type_name', 'name',
  43. 'images', 'status', 'start', 'user_id')
  44. class RepairOrderSerializer(serializers.ModelSerializer):
  45. class Meta:
  46. model = RepairOrder
  47. fields = ('id', 'fault_des', 'tel', 'name', 'repair_type','device_name','device_address','voice')
  48. def create(self, validated_data):
  49. if 'images' in self.initial_data:
  50. validated_data['images'] = self.initial_data['images'].split(',')
  51. print(self.initial_data)
  52. print(self.context['request'])
  53. validated_data['voice'] = self.initial_data['voice']
  54. print(validated_data)
  55. validated_data['user'] = self.context['request'].user
  56. validated_data['tenant'] = self.context['request'].user.employee.tenant
  57. instance = super(RepairOrderSerializer, self).create(validated_data)
  58. instance.no = instance.get_no()
  59. instance.save()
  60. RepairOrderRecord.objects.create(repair_order=instance, status=settings.NOT_CHECKED,
  61. user=self.context['request'].user, notes='报修下单')
  62. return instance
  63. class RepairOrderCommentSerializer(serializers.ModelSerializer):
  64. class Meta:
  65. model = RepairOrderComment
  66. fields = ('content', 'start', 'create_time')