diff --git a/apps/course/migrations/0036_auto_20180426_1256.py b/apps/course/migrations/0036_auto_20180426_1256.py new file mode 100644 index 00000000..0ab7b4d5 --- /dev/null +++ b/apps/course/migrations/0036_auto_20180426_1256.py @@ -0,0 +1,19 @@ +# Generated by Django 2.0.4 on 2018-04-26 09:56 + +import apps.course.models +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('course', '0035_comment_deactivated_at'), + ] + + operations = [ + migrations.AlterField( + model_name='course', + name='deferred_start_at', + field=models.DateTimeField(blank=True, help_text='Заполнить если курс отложенный', null=True, validators=[apps.course.models.deferred_start_at_validator], verbose_name='Отложенный запуск курса'), + ), + ] diff --git a/apps/course/models.py b/apps/course/models.py index e4b9c909..dee55975 100644 --- a/apps/course/models.py +++ b/apps/course/models.py @@ -3,6 +3,7 @@ from uuid import uuid4 from django.db import models from django.utils import timezone from django.utils.text import slugify +from django.utils.timezone import now from django.contrib.auth import get_user_model from django.urls import reverse_lazy from polymorphic_tree.models import PolymorphicMPTTModel, PolymorphicTreeForeignKey @@ -27,6 +28,13 @@ def default_slug(): return str(uuid4()) +def deferred_start_at_validator(value): + if value < now(): + raise ValidationError( + 'Дата и время начала курса не может быть меньше текущих.', + ) + + class Course(BaseModel, DeactivatedMixin): DRAFT = 0 PENDING = 1 @@ -66,7 +74,7 @@ class Course(BaseModel, DeactivatedMixin): is_infinite = models.BooleanField(default=False) deferred_start_at = models.DateTimeField( 'Отложенный запуск курса', help_text='Заполнить если курс отложенный', - null=True, blank=True + null=True, blank=True, validators=[deferred_start_at_validator], ) category = models.ForeignKey('Category', null=True, blank=True, on_delete=models.PROTECT) duration = models.IntegerField('Продолжительность курса', default=0)