serializers.py 3.1 KB

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