123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- # coding=utf-8
- import json
- from rest_framework import serializers
- from apps.tenant.employee.models import Employee
- from utils.exceptions import CustomError
- from apps.account.models import User
- from apps.tenant.models import Tenant
- class EmployeeSerializer(serializers.ModelSerializer):
- gender_text = serializers.CharField(source='get_gender_display', read_only=True)
- status_text = serializers.CharField(source='get_status_display', read_only=True)
- type_text = serializers.CharField(source='get_type_display', read_only=True)
- create_time = serializers.DateTimeField(source='user.date_joined', read_only=True)
- tenant = serializers.DateTimeField(source='tenant.company_name', read_only=True)
- username = serializers.CharField(source='user.username', read_only=True)
- class Meta:
- model = Employee
- fields = '__all__'
- def create(self, validated_data):
- if int(self.initial_data['type']) == Employee.SUPER and Employee.checkSuper(self.context['request'].user.employee.tenant):
- raise CustomError(u'已存在一个平台管理员,禁止操作!')
- #标准版 限制检修人人数为2
- tenant = self.context['request'].user.employee.tenant
- if int(self.initial_data['type']) == Employee.EMPLOYEE and Employee.checkEmployee(self.context['request'].user.employee.tenant) and tenant.edition == Tenant.EDITION_1:
- raise CustomError(u'当前版本,仅能添加2个检修人。如有需要,请升级到更高版本!')
- # 判断用户是否已经注册登陆过
- password = None
- username = self.initial_data['tel']
- if self.initial_data['password']:
- password = self.initial_data['password']
- user = User.objects.filter(username=username).first()
- if not user:
- # 创建user实例
- user = User.objects.create_tenant_user(validated_data['type'], username, password)
- validated_data['user'] = user
- validated_data['tenant'] = self.context['request'].user.employee.tenant
- try:
- instance = super(EmployeeSerializer, self).create(validated_data)
- return instance
- except Exception as e:
- if e.args[0] == 1062:
- raise CustomError(u'该手机号已被游客或者其他员工使用,请检查!')
- def update(self, instance, validated_data):
- if instance.tenant != self.context['request'].user.employee.tenant:
- raise CustomError(u'禁止跨企业操作!')
- if int(self.initial_data['type']) == Employee.SUPER and Employee.checkSuper(instance.tenant, instance.id):
- raise CustomError(u'已存在一个平台管理员,禁止操作!')
- # 标准版 限制检修人人数为2
- if int(self.initial_data['type']) == Employee.EMPLOYEE and Employee.checkEmployee(instance.tenant, instance.id) and instance.tenant.edition == Tenant.EDITION_1:
- raise CustomError(u'当前版本,仅能添加2个检修人。如有需要,请升级到更高版本!')
- username = self.initial_data['tel']
- if username and self.initial_data['password'].strip() != '':
- if instance.user:
- user = {
- 'username': username,
- 'password': self.initial_data['password'],
- 'is_active': 1 if self.initial_data['status'] == '1' else 0,
- 'type': self.initial_data['type'],
- }
- instance.user.update_item(user)
- else:
- is_active = 1 if self.initial_data['status'] == '1' else 0
- user = User.objects.create_tenant_user(validated_data['type'],
- username,
- self.initial_data['password'],
- is_active=is_active)
- validated_data['user'] = user
- instance = super(EmployeeSerializer, self).update(instance, validated_data)
- return instance
|