Files
ProFi/employees/models.py

90 lines
2.5 KiB
Python
Raw Normal View History

2025-05-18 21:29:04 +03:00
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 = "Должности"
2025-05-18 22:48:39 +03:00
ordering = ["name"]
2025-05-18 21:29:04 +03:00
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 = "Подразделения"
2025-05-18 22:48:39 +03:00
ordering = ["name"]
2025-05-18 21:29:04 +03:00
2025-05-18 22:16:31 +03:00
class Employee(models.Model):
2025-05-18 21:29:04 +03:00
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="Аккаунт"
)
2025-05-18 22:16:31 +03:00
@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
2025-05-18 21:29:04 +03:00
def __str__(self):
2025-05-18 22:16:31 +03:00
full_name = " ".join(filter(bool, [self.last_name, self.first_name]))
return f"{full_name} - {self.position}"
2025-05-18 21:29:04 +03:00
class Meta:
verbose_name = "Сотрудник"
verbose_name_plural = "Сотрудники"
2025-05-18 22:48:39 +03:00
ordering = ["department", "position", "account"]