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. repair_type_name = serializers.CharField(source='repair_type.name', read_only=True)
  13. create_at = DelayTimeCharField(source='create_time', read_only=True)
  14. start = serializers.SerializerMethodField()
  15. def get_start(self, obj):
  16. if obj.status == settings.APPRAISE:
  17. repair_order_comment = RepairOrderComment.objects.filter(repair_order=obj).first()
  18. if repair_order_comment:
  19. return repair_order_comment.start
  20. return 0
  21. def get_images(self, obj):
  22. return UploadSerializer(obj.images, many=True).data
  23. class Meta:
  24. model = RepairOrder
  25. fields = (
  26. 'id', 'status_text', 'status', 'no', 'fault_des', 'tel', 'name', 'create_at', 'device_address',
  27. 'device_name', 'repair_type_name', 'images', 'user_id', 'start')
  28. class RepairOrderListSerializer(serializers.ModelSerializer):
  29. status_text = serializers.CharField(source='get_status_display', read_only=True)
  30. images = serializers.SerializerMethodField()
  31. user_id = serializers.CharField(source='user.id', read_only=True)
  32. repair_type_name = serializers.CharField(source='repair_type.name', read_only=True)
  33. create_at = DelayTimeCharField(source='create_time', read_only=True)
  34. start = serializers.SerializerMethodField()
  35. def get_start(self, obj):
  36. if obj.status == settings.APPRAISE:
  37. repair_order_comment = RepairOrderComment.objects.filter(repair_order=obj).first()
  38. if repair_order_comment:
  39. return repair_order_comment.start
  40. return 0
  41. def get_images(self, obj):
  42. return UploadSerializer(obj.images, many=True).data
  43. class Meta:
  44. model = RepairOrder
  45. fields = (
  46. 'id', 'status_text', 'no', 'fault_des', 'create_at', 'device_address','repair_type_name', 'name',
  47. 'images', 'status', 'start', 'user_id')
  48. class RepairOrderSerializer(serializers.ModelSerializer):
  49. class Meta:
  50. model = RepairOrder
  51. fields = ('id', 'fault_des', 'tel', 'name', 'device', 'repair_type','device_name','device_address',)
  52. def create(self, validated_data):
  53. if 'file' in self.initial_data:
  54. validated_data['images'] = self.initial_data['file'].split(',')
  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')