|
24 | 24 | from oioioi.contests.fields import ScoreField
|
25 | 25 | from oioioi.contests.problem_instance_controller import ProblemInstanceController
|
26 | 26 | from oioioi.filetracker.fields import FileField
|
| 27 | +from enum import Enum |
27 | 28 |
|
28 | 29 |
|
29 | 30 | def make_contest_filename(instance, filename):
|
@@ -357,6 +358,10 @@ class Meta(object):
|
357 | 358 | registration_availability_options.register('NO', _("Closed"))
|
358 | 359 | registration_availability_options.register('CONFIG', _("Configuration"))
|
359 | 360 |
|
| 361 | +class RegistrationStatus(Enum): |
| 362 | + OPEN = 1 |
| 363 | + CLOSED = 2 |
| 364 | + NOT_OPEN_YET = 3 |
360 | 365 |
|
361 | 366 | @date_registry.register(
|
362 | 367 | 'registration_available_from', name_generator=(lambda obj: _("Make registration available"))
|
@@ -405,12 +410,25 @@ def is_registration_open(self, timestamp):
|
405 | 410 | return self.registration_available_from <= timestamp <= self.registration_available_to
|
406 | 411 | return False
|
407 | 412 |
|
| 413 | + |
| 414 | + def registration_status(self, timestamp): |
| 415 | + if self.enabled == 'YES': |
| 416 | + return RegistrationStatus.OPEN |
| 417 | + if self.enabled == 'CONFIG': |
| 418 | + if self.registration_available_from <= timestamp <= self.registration_available_to: |
| 419 | + return RegistrationStatus.OPEN |
| 420 | + elif self.registration_available_to < timestamp: |
| 421 | + return RegistrationStatus.CLOSED |
| 422 | + elif timestamp < self.registration_available_to: |
| 423 | + return RegistrationStatus.NOT_OPEN_YET |
| 424 | + return RegistrationStatus.CLOSED |
| 425 | + |
408 | 426 | def clean(self):
|
409 | 427 | if self.enabled == 'CONFIG':
|
410 | 428 | if self.registration_available_from is None or self.registration_available_to is None:
|
411 | 429 | raise ValidationError(_("If registration availability is set to Configuration, then "
|
412 | 430 | "'Available from' and 'Available to' must be set."))
|
413 |
| - if self.available_from > self.registration_available_to: |
| 431 | + if self.registration_available_from > self.registration_available_to: |
414 | 432 | raise ValidationError(_("'Available from' must be before 'available to'."))
|
415 | 433 |
|
416 | 434 |
|
|
0 commit comments