serializers.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. # coding=utf-8
  2. from rest_framework import serializers
  3. from apps.tenant.models import Tenant
  4. from apps.tenant.employee.models import Employee
  5. from utils.exceptions import CustomError
  6. from apps.account.models import User
  7. class TenantSerializer(serializers.ModelSerializer) :
  8. create_user_name = serializers.CharField(source='create_user.username', read_only=True)
  9. create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
  10. username = serializers.SerializerMethodField()
  11. class Meta:
  12. model = Tenant
  13. fields = '__all__'
  14. def get_username(self, obj):
  15. names = Employee.objects.filter(tenant=obj, user__type=User.TENANT).values('name')
  16. name = []
  17. for i in names:
  18. name.append(i.get('name'))
  19. return ','.join(name)
  20. def create(self, validated_data):
  21. validated_data['create_user'] = self.context['request'].user
  22. if Tenant.is_exist(validated_data['name']):
  23. raise CustomError(u'名称为[%s]的租户已存在' % validated_data['name'])
  24. instance = super(TenantSerializer, self).create(validated_data)
  25. return instance
  26. def update(self, instance, validated_data):
  27. if instance.delete:
  28. raise CustomError(u'租户[%s]已经被删除,禁止修改' % instance.name)
  29. if Tenant.is_exist(validated_data['name'], instance.id):
  30. raise CustomError(u'名称为[%s]的租户已存在' % validated_data['name'])
  31. instance = super(TenantSerializer, self).update(instance, validated_data)
  32. return instance