Пример #1
0
class EducationDirection(models.Model):
    specialization = models.ForeignKey(
        "Specialization",
        verbose_name=_("Специальность"),
        on_delete=models.CASCADE,
        related_name="directions",
        db_index=True,
    )

    class EducationForms(models.TextChoices):
        full_time = "full_time", "Очная"
        part_time = "part_time", "Очно-заочная"
        distance = "distance", "Заочная"

    education_form = models.CharField(
        _("Форма обучения"),
        max_length=count_max_length(EducationForms),
        choices=EducationForms.choices,
        db_index=True,
    )
    duration = models.PositiveSmallIntegerField(_("Продолжительность"),
                                                help_text="В месяцах")

    objects = EducationDirectionQuerySet.as_manager()

    class Meta:
        verbose_name = "Направление обучения"
        verbose_name_plural = "Направления обучения"
        unique_together = ("specialization", "education_form")
Пример #2
0
class EnrolleeSpecialization(models.Model):
    priority = models.SmallIntegerField(_("Приоритет"), db_index=True)
    specialization = models.ForeignKey(
        "specs.EducationDirection",
        verbose_name=_("Специализация"),
        on_delete=models.CASCADE,
        db_index=True,
    )

    class EducationForms(models.TextChoices):
        budget = "budget", "Бюджетная"
        contract = "contract", "Платная основа"

    education_form = models.CharField(
        _("Форма обучения"),
        choices=EducationForms.choices,
        max_length=count_max_length(EducationForms),
    )
    enrollee = models.ForeignKey(
        "Enrollee",
        verbose_name=_("Абитуриент"),
        on_delete=models.CASCADE,
        related_name="directions",
    )

    class Meta:
        verbose_name = "Специализация абитуриента"
        verbose_name_plural = "Специализации абитуриентов"
        ordering = ("priority", )
        unique_together = ("priority", "enrollee")
Пример #3
0
class GosOlympiadStatus(models.Model):
    status = models.CharField(
        _("Статус"),
        max_length=count_max_length(OlympiadStatuses),
        choices=OlympiadStatuses.choices,
    )

    class Levels(models.TextChoices):
        country = "country", "Всероссийской"
        region = "region", "Областной"

    level = models.CharField(_("Уровень"),
                             max_length=count_max_length(Levels),
                             choices=Levels.choices)
    subject = models.CharField(_("Наименование предмета"), max_length=50)

    class Meta:
        verbose_name = "Участие в государственных олимпиадах"
        verbose_name_plural = "Участие в государственных олимпиадах"
Пример #4
0
class AbylimpixStatus(models.Model):
    status = models.CharField(
        _("Статус"),
        max_length=count_max_length(OlympiadStatuses),
        choices=OlympiadStatuses.choices,
    )
    competition = models.CharField(_("Компетенция"), max_length=128)

    class Meta:
        verbose_name = 'Участие в чемпионате "Абилимпикс"'
        verbose_name_plural = 'Участие в чемпионате "Абилимпикс"'
Пример #5
0
class WsrOlympiadStatus(models.Model):
    status = models.CharField(
        _("Статус"),
        max_length=count_max_length(OlympiadStatuses),
        choices=OlympiadStatuses.choices,
    )
    competition = models.CharField(_("Компетенция"), max_length=128)

    class Meta:
        verbose_name = 'Участие в чемпионате "Молодые профессионалы (WSR)"'
        verbose_name_plural = 'Участие в чемпионате "Молодые профессионалы (WSR)"'
Пример #6
0
class EducationDoc(models.Model):
    class Types(models.TextChoices):
        credential = "credential", "Аттестат"

    type = models.CharField(_("Тип"),
                            max_length=count_max_length(Types),
                            choices=Types.choices)
    num = models.CharField(_("Номер"), max_length=50)
    grade = models.PositiveSmallIntegerField(_("Оценка"), db_index=True)

    class Meta:
        verbose_name = "Документ об образовании"
        verbose_name_plural = "Документы об образовании"
Пример #7
0
class Enrollee(models.Model):
    first_name = models.CharField(_("Имя"), max_length=128)
    last_name = models.CharField(_("Фамилия"), max_length=128)
    middle_name = models.CharField(_("Отчество"), max_length=128)
    birth_date = models.DateField(_("Дата рождения"),
                                  auto_now=False,
                                  auto_now_add=False,
                                  db_index=True)
    birth_place = models.CharField(_("Место рождения"), max_length=128)
    # fixme: более точные гражданства, возможно из списка
    citizenship = models.CharField(_("Гражданство"), max_length=128)
    passport = models.OneToOneField("EnrolleePassport",
                                    verbose_name=_("Паспорт"),
                                    on_delete=models.CASCADE)
    residence_place = models.CharField(_("Место проживания"), max_length=256)
    personal_phone = models.CharField(_("Личный телефон"), max_length=50)
    home_phone = models.CharField(_("Домашний телефон"),
                                  max_length=50,
                                  blank=True,
                                  null=True)
    graduated_institution = models.OneToOneField(
        "GraduatedInstitution",
        on_delete=models.CASCADE,
        verbose_name="Окончил",
        blank=True,
        null=True,
    )
    education_org = models.ForeignKey(
        "organizations.EducationOrg",
        verbose_name=_("Образовательная организация"),
        on_delete=models.CASCADE,
        db_index=True,
    )

    class Grades(models.IntegerChoices):
        five_classes = 0, "5 классов"
        nine_classes = 1, "9 классов"
        eleven_classes = 2, "11 классов"
        special = 3, "Среднее специальное образование"
        incomplete_higher = 4, "Неоконченное высшее"
        higher = 5, "Высшее"

    grade = models.PositiveSmallIntegerField(_("Уровень образование"),
                                             choices=Grades.choices,
                                             db_index=True)
    education_doc = models.OneToOneField(
        "EducationDoc",
        verbose_name=_("Документ об образовании"),
        on_delete=models.CASCADE,
        blank=True,
        null=True,
        db_index=True,
    )
    english = models.BooleanField(_("Английский язык"), db_index=True)
    has_goal_contract = models.BooleanField(
        _("Наличие договора о целевом обучении"), db_index=True)
    gos_olympiad_status = models.OneToOneField(
        "GosOlympiadStatus",
        verbose_name=_("Участие в государственных олимпиадах"),
        on_delete=models.CASCADE,
        blank=True,
        null=True,
        db_index=True,
    )
    wsr_olympiad_status = models.OneToOneField(
        "WsrOlympiadStatus",
        verbose_name=_('Участие в чемпионате "Молодые профессионалы (WSR)"'),
        on_delete=models.CASCADE,
        blank=True,
        null=True,
        db_index=True,
    )
    abylimpix_status = models.OneToOneField(
        "AbylimpixStatus",
        verbose_name=_('Участие в чемпионате "Абилимпикс"'),
        on_delete=models.CASCADE,
        blank=True,
        null=True,
        db_index=True,
    )
    need_residence = models.BooleanField(_("Общежитие"), db_index=True)
    is_orphan = models.BooleanField(
        _("Дети-сироты, дети, оставшиеся без попечения родителей, лица из их числа"
          ),
        db_index=True,
    )
    is_handicapped = models.BooleanField(_("Инвалиды"), db_index=True)
    is_ovz = models.BooleanField(_("Лица с ОВЗ (имеется ПМПК)"), db_index=True)

    choreography_doc = models.CharField(
        _("Хореография (подтверждающий документ)"),
        max_length=128,
        blank=True,
        null=True,
    )
    vocal_doc = models.CharField(
        _("Вокальные данные (подтверждающий документ)"),
        max_length=128,
        blank=True,
        null=True,
    )
    kvn_doc = models.CharField(
        _("Участие в КВН (подтверждающий документ)"),
        max_length=128,
        blank=True,
        null=True,
    )
    art_doc = models.CharField(
        _("Художественные навыки (подтверждающий документ)"),
        max_length=128,
        blank=True,
        null=True,
    )
    theatre_doc = models.CharField(
        _("Участие в театральных постановках (подтверждающий документ)"),
        max_length=128,
        blank=True,
        null=True,
    )

    mother = models.OneToOneField(
        "ParentData",
        verbose_name=_("Сведения о матери"),
        on_delete=models.CASCADE,
        blank=True,
        null=True,
        related_name="+",
    )
    father = models.OneToOneField(
        "ParentData",
        verbose_name=_("Сведения об отце"),
        on_delete=models.CASCADE,
        blank=True,
        null=True,
        related_name="+",
    )
    parents_email = models.EmailField(_("Адрес электронной почты родителей"),
                                      max_length=254)
    is_first_time = models.BooleanField(
        _("Среднее профессиональное образование получаю впервые"))
    application_dt = models.DateTimeField(_("Дата подачи заявления"),
                                          default=timezone.now,
                                          editable=False)

    class Sexes(models.IntegerChoices):
        male = 0, "Мужской"
        female = 1, "Женский"

    sex = models.PositiveSmallIntegerField("Пол",
                                           choices=Sexes.choices,
                                           db_index=True)

    class Statuses(models.TextChoices):
        enrollee = "enrollee", "Абитуриент"
        student = "student", "Студент"
        rejected = "rejected", "Не поступил"

    status = models.CharField(
        "Статус",
        default=Statuses.enrollee,
        choices=Statuses.choices,
        max_length=count_max_length(Statuses),
    )

    objects = EnrolleeQuerySet.as_manager()

    class Meta:
        verbose_name = "Абитуриент"
        verbose_name_plural = "Абитуриенты"
        ordering = ("-application_dt", )

    def __str__(self):
        return f"{self.last_name} {self.first_name} {self.middle_name}"
Пример #8
0
class Graduate(models.Model):
    first_name = models.CharField(_("Имя"), max_length=128)
    last_name = models.CharField(_("Фамилия"), max_length=128)
    middle_name = models.CharField(_("Отчество"), max_length=128)
    birth_date = models.DateField(_("Дата рождения"),
                                  auto_now=False,
                                  auto_now_add=False)
    specialization = models.ForeignKey(
        "specs.EducationDirection",
        verbose_name=_("Специализация"),
        on_delete=models.CASCADE,
    )
    education_org = models.ForeignKey(
        "organizations.EducationOrg",
        verbose_name=_("Образовательное учреждение"),
        on_delete=models.CASCADE,
    )
    due_at = models.DateField(_("Дата окончания"),
                              auto_now=False,
                              auto_now_add=False,
                              blank=True,
                              null=True)

    class EducationForms(models.TextChoices):
        budget = "budget", "Бюджетная"
        contract = "contract", "Платная основа"

    education_form = models.CharField(
        _("Форма обучения"),
        choices=EducationForms.choices,
        max_length=count_max_length(EducationForms),
    )

    class Sexes(models.IntegerChoices):
        male = 0, "Мужской"
        female = 1, "Женский"

    sex = models.PositiveSmallIntegerField("Пол",
                                           choices=Sexes.choices,
                                           db_index=True)

    class Statuses(models.TextChoices):
        employed = "employed", "Трудоустроены"
        employed_by_contract = (
            "employed_by_contract",
            "Трудустроены согласно целевым договорам",
        )
        continue_education = "continue_education", "Продолжили обучение"
        not_employed = "not_employed", "Не трудоустроены"

    status = models.CharField("Статус",
                              max_length=count_max_length(Statuses),
                              choices=Statuses.choices)

    objects = GraduateQuerySet.as_manager()

    class Meta:
        verbose_name = "Выпускник"
        verbose_name_plural = "Выпускники"

    def __str__(self):
        return f"{self.last_name} {self.first_name} {self.middle_name}"