from django.db import models from core.models import ContactMixin # Предполагается, что ContactMixin находится в приложении core from education.models import AcademicYear # Предполагается, что AcademicYear находится в приложении education from employees.models import Employee # Предполагается, что модель Employee находится в приложении employees ## Профориентационная деятельность (название приложения: outreach) class InstitutionType(models.Model): name = models.CharField(max_length=50, verbose_name="Название вида учебного заведения") def __str__(self): return self.name class Meta: verbose_name = "Вид учебного заведения" verbose_name_plural = "Виды учебных заведений" ordering = ["name"] class Representative(ContactMixin): position = models.CharField(max_length=100, blank=True, null=True, verbose_name="Должность") def __str__(self): return f"{super().__str__()}"+(" - "+self.position if self.position else "") class Meta: verbose_name = "Представитель" verbose_name_plural = "Представители" ordering = ["position"] class School(models.Model): director = models.ForeignKey( Representative, on_delete=models.SET_NULL, null=True, blank=True, verbose_name="Директор" ) institution_type = models.ForeignKey( InstitutionType, on_delete=models.CASCADE, verbose_name="Вид учебного заведения" ) name = models.CharField(max_length=200, verbose_name="Название") address = models.CharField(max_length=300, verbose_name="Адрес") def __str__(self): return f"{self.name} ({self.institution_type})" class Meta: verbose_name = "Школа" verbose_name_plural = "Школы" ordering = ["institution_type", "name", "address"] class Partner(models.Model): name = models.CharField(max_length=200, verbose_name="Название") description = models.TextField(blank=True, null=True, verbose_name="Описание") def __str__(self): return self.name class Meta: verbose_name = "Партнер" verbose_name_plural = "Партнеры" ordering = ["name"] class PartnerRepresentative(models.Model): representative = models.OneToOneField( Representative, on_delete=models.CASCADE, verbose_name="Представитель" ) partner = models.ForeignKey( Partner, on_delete=models.CASCADE, verbose_name="Партнер" ) def __str__(self): return f"{self.representative} - {self.partner}" class Meta: verbose_name = "Представитель партнера" verbose_name_plural = "Представители партнеров" unique_together = ("representative", "partner") ordering = ["partner", "representative"] class SchoolResponsibility(models.Model): academic_year = models.ForeignKey( AcademicYear, on_delete=models.CASCADE, verbose_name="Учебный год" ) responsible = models.ForeignKey( Employee, on_delete=models.CASCADE, verbose_name="Ответственный сотрудник" ) school = models.ForeignKey( School, on_delete=models.CASCADE, verbose_name="Школа" ) def __str__(self): return f"{self.responsible} - {self.school} ({self.academic_year})" class Meta: verbose_name = "Ответственный за школу" verbose_name_plural = "Ответственные за школы" ordering = ["academic_year", "responsible", "school"]