serializers.py 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. # coding=utf-8
  2. import json
  3. from rest_framework import serializers
  4. from apps.option.models import Option
  5. from utils.exceptions import CustomError
  6. from utils.booleancharfield import BooleanCharField
  7. from apps.option.serializers import OptionSerializer
  8. from .models import ReportCustomer,NewCustomer,Review
  9. class ReportCustomerSerializer(serializers.ModelSerializer):
  10. gender_text = serializers.CharField(source='get_gender_display', read_only=True)
  11. report_status_text = serializers.CharField(source='get_report_status_display', read_only=True)
  12. source_text = serializers.CharField(source='source.name', read_only=True)
  13. create_user_text = serializers.CharField(source='create_user.name', read_only=True)
  14. check_user_text = serializers.CharField(source='check_user.name', read_only=True)
  15. project_text = serializers.SerializerMethodField()
  16. def get_project_text(self, obj):
  17. project = obj.project.all()
  18. return ','.join(project.values_list('name', flat=True))
  19. class Meta:
  20. model = ReportCustomer
  21. fields = '__all__'
  22. def create(self, validated_data):
  23. validated_data['create_user'] = self.context['request'].user
  24. store = self.context['request'].user.store
  25. if not store:
  26. raise CustomError('当前账号未绑定门店,禁止报备客户!')
  27. validated_data['store'] = store
  28. instance = super(ReportCustomerSerializer, self).create(validated_data)
  29. projects = self.initial_data['project']
  30. if projects:
  31. projects = json.loads(projects)
  32. else:
  33. raise CustomError(u'请选择项目!')
  34. for project in projects:
  35. instance.project.add(project)
  36. return instance
  37. def update(self, instance, validated_data):
  38. instance.project.clear()
  39. projects = self.initial_data['project']
  40. if projects:
  41. projects = json.loads(projects)
  42. else:
  43. raise CustomError(u'请选择项目')
  44. for project in projects:
  45. instance.project.add(project)
  46. instance = super(ReportCustomerSerializer, self).update(instance, validated_data)
  47. return instance
  48. class NewCustomerSerializer(serializers.ModelSerializer):
  49. track_user_text = serializers.CharField(source='track_user.name', read_only=True)
  50. create_user_text = serializers.CharField(source='create_user.name', read_only=True)
  51. potential_level_text = serializers.CharField(source='potential_level.name', read_only=True)
  52. stage_progress_text = serializers.CharField(source='stage_progress.name', read_only=True)
  53. create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
  54. end_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
  55. next_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
  56. name = serializers.CharField(source='report_customer.name', read_only=True)
  57. tel = serializers.CharField(source='report_customer.tel', read_only=True)
  58. village = serializers.CharField(source='report_customer.village', read_only=True)
  59. address = serializers.CharField(source='report_customer.address', read_only=True)
  60. source_text = serializers.CharField(source='report_customer.source.name', read_only=True)
  61. project_text = serializers.CharField(source='report_customer.projects.name', read_only=True)
  62. class Meta:
  63. model = NewCustomer
  64. fields = (
  65. 'id', 'name', 'tel', 'village', 'address', 'source_text', 'project_text', 'potential_level_text',
  66. 'stage_progress_text', 'end_time', 'next_time','create_time', 'create_user_text', 'track_user_text',
  67. )
  68. def create(self, validated_data):
  69. validated_data['create_user'] = self.context['request'].user
  70. instance = super(NewCustomerSerializer, self).create(validated_data)
  71. return instance
  72. def update(self, instance, validated_data):
  73. instance = super(NewCustomerSerializer, self).update(instance, validated_data)
  74. return instance
  75. class ReviewSerializer(serializers.ModelSerializer):
  76. create_user_text = serializers.CharField(source='create_user.name', read_only=True)
  77. check_user_text = serializers.CharField(source='check_user.name', read_only=True)
  78. check_status_text = serializers.CharField(source='get_check_status_display', read_only=True)
  79. create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
  80. check_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
  81. is_giveup_text = BooleanCharField(source='enable', read_only=True)
  82. class Meta:
  83. model = Review
  84. fields = '__all__'