serializers.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. # coding=utf-8
  2. from rest_framework import serializers
  3. from .models import Option
  4. from utils.exceptions import CustomError
  5. class OptionSerializer(serializers.ModelSerializer):
  6. type_name = serializers.CharField(source='get_type_display', read_only=True)
  7. enable_text = serializers.SerializerMethodField()
  8. def get_enable_text(self,obj):
  9. if obj.enable:
  10. return '是'
  11. return '否'
  12. class Meta:
  13. model = Option
  14. fields = '__all__'
  15. def create(self, validated_data):
  16. validated_data['tenant'] = self.context['request'].user.employee.tenant
  17. validated_data['create_user'] = self.context['request'].user
  18. is_exist = Option.is_exist(validated_data['tenant'],validated_data['type'], validated_data['name'])
  19. if is_exist:
  20. raise CustomError(u'系统选项[%s]已存在!' % validated_data['name'])
  21. instance = super(OptionSerializer,self).create(validated_data)
  22. return instance
  23. def update(self, instance, validated_data):
  24. if instance.tenant != self.context['request'].user.employee.tenant:
  25. raise CustomError(u'禁止跨企业操作!')
  26. if instance.delete:
  27. raise CustomError(u'系统选项[%s]已经被删除,禁止操作' % instance.name)
  28. is_exist = Option.is_exist(instance.tenant, validated_data['type'], validated_data['name'], instance.id)
  29. if is_exist:
  30. raise CustomError(u'系统选项[%s]已存在!' % validated_data['name'])
  31. instance = super(OptionSerializer, self).update(instance, validated_data)
  32. return instance