Files
ProFi/employees/models.py
2025-05-18 22:48:39 +03:00

90 lines
2.5 KiB
Python

from django.db import models
from core.models import ContactMixin # Предполагается, что ContactMixin находится в приложении core
## Учет сотрудников (название приложения: employees)
class Position(models.Model):
name = models.CharField(max_length=100, verbose_name="Название должности")
def __str__(self):
return self.name
class Meta:
verbose_name = "Должность"
verbose_name_plural = "Должности"
ordering = ["name"]
class Department(models.Model):
name = models.CharField(max_length=100, verbose_name="Название подразделения")
def __str__(self):
return self.name
class Meta:
verbose_name = "Подразделение"
verbose_name_plural = "Подразделения"
ordering = ["name"]
class Employee(models.Model):
department = models.ForeignKey(
Department, on_delete=models.CASCADE, verbose_name="Подразделение"
)
position = models.ForeignKey(
Position, on_delete=models.SET_NULL, null=True, blank=True, verbose_name="Должность"
)
account = models.OneToOneField(
"users.Account", on_delete=models.CASCADE, unique=True, verbose_name="Аккаунт"
)
@property
def first_name(self):
return self.account.first_name
@first_name.setter
def first_name(self, value):
self.account.first_name = value
@property
def last_name(self):
return self.account.last_name
@last_name.setter
def last_name(self, value):
self.account.last_name = value
@property
def middle_name(self):
return self.account.middle_name
@middle_name.setter
def middle_name(self, value):
self.account.middle_name = value
@property
def phone(self):
return self.account.phone
@phone.setter
def phone(self, value):
self.account.phone = value
@property
def email(self):
return self.account.email
@email.setter
def email(self, value):
self.account.email = value
def __str__(self):
full_name = " ".join(filter(bool, [self.last_name, self.first_name]))
return f"{full_name} - {self.position}"
class Meta:
verbose_name = "Сотрудник"
verbose_name_plural = "Сотрудники"
ordering = ["department", "position", "account"]