12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- # coding=utf-8
- from django.db import models
- from django.conf import settings
- from apps.account.models import User
- from apps.tenant.models import Tenant
- from apps.tenant.area.models import Department
- from apps.tenant.option.models import Option
- from utils.exceptions import CustomError
- from django.db import transaction
- class Employee(models.Model):
- LEAVE_UNUSED = 1
- WORKING = 2
- DAY_OFF = 3
- LEAVE_OFFICE = 4
- STATUS_CHOICES = (
- (LEAVE_UNUSED, u'在职'),
- (WORKING, u'工作中'),
- (DAY_OFF, u'调休'),
- (LEAVE_OFFICE, u'离职'),
- )
- EMPLOYEE = 1
- VISITOR = 2
- TYPE_CHOICES = (
- (EMPLOYEE, u'职工'),
- (VISITOR, u'游客')
- )
- name = models.CharField(max_length=100, verbose_name=u"姓名")
- tel = models.CharField(max_length=50, verbose_name=u'电话')
- gender = models.PositiveSmallIntegerField(choices=settings.GENDER_CHOICES, verbose_name=u'性别', default=settings.MALE)
- status = models.PositiveSmallIntegerField(choices=STATUS_CHOICES, verbose_name=u'状态',default=LEAVE_UNUSED)
- user = models.OneToOneField(settings.AUTH_USER_MODEL, editable=False, related_name='employee',
- on_delete=models.PROTECT, verbose_name=u'职工', null=True)
- position = models.ForeignKey(Option, verbose_name=u'职位', on_delete=models.PROTECT, null=True)
- department = models.ForeignKey(Department, verbose_name=u'部门', on_delete=models.PROTECT, null=True)
- create_user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u"创建人", on_delete=models.PROTECT,
- editable=False, related_name='create_user',null=True)
- face = models.CharField(max_length=200, verbose_name=u'头像', null=True)
- baoxiu_count = models.IntegerField(verbose_name='报修次数', default=0)
- forbid_baoxiu = models.BooleanField(verbose_name='是否禁用报修', default=False)
- tenant = models.ForeignKey(Tenant, verbose_name=u'租户', editable=False, on_delete=models.PROTECT,null=True)
- type = models.PositiveSmallIntegerField(verbose_name=u'人员类型', choices=TYPE_CHOICES, default=VISITOR)
- class Meta:
- db_table = "employee"
- verbose_name = u"员工管理"
- ordering = ['-id']
- index_together = (
- 'name',
- 'tel',
- )
- default_permissions = ()
- permissions = [
- ('browse_employee', u'查看'),
- ('add_employee', u'添加'),
- ('delete_employee', u'删除'),
- ]
- @staticmethod
- def create_admin(tenant, username, password):
- user = User.objects.create_superuser_tenant(username, password)
- instance = Employee.objects.create(
- name=username,
- tel='',
- gender=settings.MALE,
- user=user,
- tenant=tenant,
- type=Employee.EMPLOYEE,
- )
- return instance
- @staticmethod
- def get_instance_by_id(id, tenant):
- try:
- id = int(id)
- except:
- raise CustomError('无效的employee_id')
- instance = Employee.objects.filter(pk=id, tenant=tenant).first()
- if not instance:
- raise CustomError('未找到对应的员工实例')
- return instance
- @staticmethod
- def getOrRegister(tenant, user):
- customer = Employee.objects.filter(tenant=tenant, user=user).first()
- if customer:
- return customer
- with transaction.atomic():
- customer = Employee.objects.create(user=user,type=Employee.VISITOR, tel=user.username, name=user.username, tenant=tenant)
- return customer
|