123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- #coding=utf-8
- from django.db.models import Q
- from django.utils import timezone
- from rest_framework import serializers
- from apps.exceptions import CustomError
- from apps.serializer_errors import dump_serializer_errors
- from models import Customer
- from apps.foundation.models import BizLog
- from apps import base
- class CustomerSerializer(serializers.ModelSerializer):
- create_time = serializers.DateTimeField(format=base.DATETIME_FORMAT, read_only=True)
- create_user_text = serializers.CharField(source='create_user.name', read_only=True)
- class Meta:
- model = Customer
- fields = '__all__'
- @staticmethod
- def factory(user, data, id=None):
- if id:
- instance = Customer.getById(id)
- else:
- instance = None
- serializer = CustomerSerializer(instance, data=data)
- serializer.user = user
- return serializer
- def validSave(self):
- if self.is_valid():
- return self.save()
- else:
- raise CustomError(dump_serializer_errors(self))
- def create(self, validated_data):
- validated_data['create_user'] = self.user
- item = Customer.objects.filter(mobile=validated_data['mobile']).first()
- if item:
- raise CustomError(u'手机号[%s]已存在' % validated_data['mobile'])
- instance = super(CustomerSerializer, self).create(validated_data)
- BizLog.objects.addnew(self.user, BizLog.INSERT, u"添加客户档案[%s],id=%d" % (
- instance.name, instance.id), validated_data)
- return instance
- def update(self, instance, validated_data):
- item = Customer.objects.filter(Q(mobile=validated_data['mobile']), ~Q(id=instance.id)).first()
- if item:
- raise CustomError(u'手机号[%s]已存在' % validated_data['mobile'])
- BizLog.objects.addnew(self.user, BizLog.UPDATE, u"修改供客户档案[%s],id=%d" % (
- instance.name, instance.id), validated_data)
- instance = super(CustomerSerializer, self).update(instance, validated_data)
- return instance
|