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 = "Должности" 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 = "Подразделения" 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 = "Сотрудники"