mirror of https://github.com/raiots/TasksManager
80 lines
2.4 KiB
Python
80 lines
2.4 KiB
Python
from django.db import models
|
|
from django.contrib.auth.models import AbstractUser, Group
|
|
|
|
|
|
# Create your models here.
|
|
from django.db.models import Avg, Sum, F, Value
|
|
|
|
|
|
class User(AbstractUser):
|
|
real_name = models.CharField(max_length=150, verbose_name='姓名')
|
|
staff_id = models.CharField(max_length=150, verbose_name='工号')
|
|
department = models.ForeignKey('Department', on_delete=models.SET_NULL, null=True, blank=True)
|
|
|
|
class Meta:
|
|
verbose_name = '用户'
|
|
verbose_name_plural = '用户'
|
|
|
|
def __str__(self):
|
|
return self.real_name
|
|
|
|
@classmethod
|
|
def get_total_point(cls):
|
|
return cls.objects.annotate(total=Sum('main_executor__predict_work'))
|
|
# def get_total_point(cls):
|
|
# return cls.objects.aggregate(total=Sum(F('main_executor__predict_work') * F('main_executor__evaluate_factor') + F('sub_executor__predict_work') * F('sub_executor__evaluate_factor')))['total']
|
|
|
|
@classmethod
|
|
def get_predict_work_count(cls):
|
|
return cls.objects.aggregate(total_predict_work=Sum('main_executor__predict_work'))
|
|
|
|
|
|
class MyGroup(Group):
|
|
class Meta:
|
|
verbose_name = '权限组'
|
|
verbose_name_plural = '权限组'
|
|
|
|
|
|
class Department(models.Model):
|
|
name = models.CharField(max_length=50, verbose_name='部门名称')
|
|
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
class Meta:
|
|
verbose_name = '部门'
|
|
verbose_name_plural = '部门'
|
|
|
|
|
|
class MarkValue(models.Model):
|
|
mark_value = models.DecimalField('评价等级考核系数', max_digits=3, decimal_places=2)
|
|
|
|
def __str__(self):
|
|
return str(self.mark_value)
|
|
class Meta:
|
|
verbose_name = '评价等级考核系数'
|
|
verbose_name_plural = verbose_name
|
|
|
|
|
|
class QualityMark(models.Model):
|
|
mark_name = models.CharField('评价等级定义', max_length=10)
|
|
mark_value = models.ForeignKey('MarkValue', on_delete=models.CASCADE)
|
|
|
|
def __str__(self):
|
|
return self.mark_name
|
|
class Meta:
|
|
verbose_name = '评价等级定义'
|
|
verbose_name_plural = verbose_name
|
|
|
|
|
|
class TaskProperty(models.Model):
|
|
own_department = models.ForeignKey('Department', on_delete=models.SET_NULL, null=True, blank=True, verbose_name='所属部门')
|
|
task_property = models.CharField(max_length=50, verbose_name='任务属性')
|
|
|
|
class Meta:
|
|
verbose_name = '任务属性'
|
|
verbose_name_plural = '任务属性'
|
|
|
|
def __str__(self):
|
|
return self.task_property
|