|
1 | 1 | from django.contrib.auth import get_user_model |
2 | 2 | from django.core.exceptions import ValidationError |
3 | 3 | from django.db import models |
| 4 | +from django.utils import timezone |
4 | 5 |
|
5 | 6 | from files.models import UserFile |
6 | 7 | from partner_programs.constants import get_default_data_schema |
@@ -115,6 +116,17 @@ class PartnerProgram(models.Model): |
115 | 116 | datetime_registration_ends = models.DateTimeField( |
116 | 117 | verbose_name="Дата окончания регистрации", |
117 | 118 | ) |
| 119 | + datetime_project_submission_ends = models.DateTimeField( |
| 120 | + null=True, |
| 121 | + blank=True, |
| 122 | + verbose_name="Дата окончания подачи проектов", |
| 123 | + help_text="Если не указано, используется дата окончания регистрации", |
| 124 | + ) |
| 125 | + datetime_evaluation_ends = models.DateTimeField( |
| 126 | + null=True, |
| 127 | + blank=True, |
| 128 | + verbose_name="Дата окончания оценки проектов", |
| 129 | + ) |
118 | 130 | datetime_started = models.DateTimeField( |
119 | 131 | verbose_name="Дата начала", |
120 | 132 | ) |
@@ -143,6 +155,14 @@ class Meta: |
143 | 155 | def __str__(self): |
144 | 156 | return f"PartnerProgram<{self.pk}> - {self.name}" |
145 | 157 |
|
| 158 | + def get_project_submission_deadline(self): |
| 159 | + """Возвращает дедлайн подачи проектов: отдельное поле или дата окончания регистрации.""" |
| 160 | + return self.datetime_project_submission_ends or self.datetime_registration_ends |
| 161 | + |
| 162 | + def is_project_submission_open(self) -> bool: |
| 163 | + deadline = self.get_project_submission_deadline() |
| 164 | + return deadline is None or deadline >= timezone.now() |
| 165 | + |
146 | 166 |
|
147 | 167 | class PartnerProgramUserProfile(models.Model): |
148 | 168 | """ |
|
0 commit comments