/
navydragon
/
tutorCompetitionApi
Обзор
Документация
Войти
/
navydragon
/
tutorCompetitionApi
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
learning/models.py
187 строк
6 KB
navydragon
edu
10 авг 2026, 08:57
10 авг 2026, 08:57
a70350d
Код
Авторство
О чём код?
from django.db import models from accounts.models import CustomUser class LearningApplication(models.Model): STATUS_FILLING = "filling" STATUS_SUBMITTED = "submitted" STATUS_CORRECTION_REQUIRED = "correction_required" STATUS_APPROVED = "approved" STATUS_REJECTED = "rejected" STATUS_CHOICES = ( (STATUS_FILLING, "На заполнении"), (STATUS_SUBMITTED, "Подана"), (STATUS_CORRECTION_REQUIRED, "На исправлении"), (STATUS_APPROVED, "Одобрена"), (STATUS_REJECTED, "Отклонена"), ) EDITABLE_STATUSES = (STATUS_FILLING, STATUS_CORRECTION_REQUIRED) GENDER_FEMALE = "female" GENDER_MALE = "male" GENDER_CHOICES = ( (GENDER_FEMALE, "Женский"), (GENDER_MALE, "Мужской"), ) EDUCATION_LEVEL_CHOICES = ( (1, "Среднее профессиональное"), (2, "Высшее — бакалавриат"), (3, "Высшее — специалитет"), (4, "Высшее — магистратура"), (5, "Высшее — аспирантура"), ) DOCUMENT_FIELD_MAP = { "snils": "snils_file", "diploma": "diploma_file", "marriage_cert": "marriage_cert_file", "apostille": "apostille_file", "degree_diploma": "degree_diploma_file", } SECTION_CONFIRM_FIELD_MAP = { "info": "info_confirmed", "consent": "consent_confirmed", "snils": "snils_confirmed", "diploma": "diploma_confirmed", } user = models.OneToOneField( CustomUser, on_delete=models.CASCADE, related_name="learning_application", verbose_name="Пользователь", ) course = models.ForeignKey( "lms.Course", on_delete=models.SET_NULL, null=True, blank=True, related_name="learning_applications", verbose_name="Курс", ) status = models.CharField( max_length=32, choices=STATUS_CHOICES, default=STATUS_FILLING, verbose_name="Статус", ) birth_date = models.DateField(null=True, blank=True, verbose_name="Дата рождения") gender = models.CharField( max_length=10, choices=GENDER_CHOICES, blank=True, default="", verbose_name="Пол", ) education_level = models.PositiveSmallIntegerField( choices=EDUCATION_LEVEL_CHOICES, null=True, blank=True, verbose_name="Уровень образования", ) graduation_year = models.PositiveIntegerField( null=True, blank=True, verbose_name="Год окончания обучения" ) institution_name = models.CharField( max_length=500, blank=True, default="", verbose_name="Образовательное учреждение" ) actual_address = models.TextField( blank=True, default="", verbose_name="Адрес фактического проживания" ) study_address = models.TextField( blank=True, default="", verbose_name="Адрес проживания в период обучения" ) address_same_as_actual = models.BooleanField( default=False, verbose_name="Адрес совпадает с фактическим" ) registration_address = models.TextField( blank=True, default="", verbose_name="Адрес постоянной регистрации" ) passport_series = models.CharField( max_length=10, blank=True, default="", verbose_name="Серия паспорта" ) passport_number = models.CharField( max_length=20, blank=True, default="", verbose_name="Номер паспорта" ) passport_issue_date = models.DateField( null=True, blank=True, verbose_name="Дата выдачи паспорта" ) passport_issued_by = models.TextField( blank=True, default="", verbose_name="Кем выдан паспорт" ) personal_data_consent = models.BooleanField( default=False, verbose_name="Согласие на обработку ПД" ) snils = models.CharField( max_length=20, blank=True, default="", verbose_name="СНИЛС" ) info_confirmed = models.BooleanField( default=False, verbose_name="Информация о слушателе подтверждена" ) consent_confirmed = models.BooleanField( default=False, verbose_name="Согласие на обработку ПД подтверждено" ) snils_confirmed = models.BooleanField( default=False, verbose_name="СНИЛС подтверждён" ) diploma_confirmed = models.BooleanField( default=False, verbose_name="Диплом подтверждён" ) organizer_comment = models.TextField( blank=True, default="", verbose_name="Комментарий организатора" ) snils_file = models.FileField( upload_to="learning_documents/", null=True, blank=True, verbose_name="Файл СНИЛС", ) diploma_file = models.FileField( upload_to="learning_documents/", null=True, blank=True, verbose_name="Файл диплома", ) marriage_cert_file = models.FileField( upload_to="learning_documents/", null=True, blank=True, verbose_name="Свидетельство о браке/перемене имени", ) apostille_file = models.FileField( upload_to="learning_documents/", null=True, blank=True, verbose_name="Апостиль диплома", ) degree_diploma_file = models.FileField( upload_to="learning_documents/", null=True, blank=True, verbose_name="Диплом об учёной степени", ) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) def __str__(self): return f"Заявка на обучение: {self.user} ({self.get_status_display()})" @property def is_editable(self): return self.status in self.EDITABLE_STATUSES class Meta: verbose_name = "Заявка на обучение" verbose_name_plural = "Заявки на обучение"