diff --git a/apps/school/fixtures/school_schedules.json b/apps/school/fixtures/school_schedules.json index 9841f8eb..8cba4ef4 100644 --- a/apps/school/fixtures/school_schedules.json +++ b/apps/school/fixtures/school_schedules.json @@ -34,7 +34,7 @@ "pk": 3, "fields": { "weekday": 3, - "title": "Пластелин", + "title": "Пластилин", "short_description": "Однажды он затеял скандал на торговой площади ради леденца", "description": "Однажды он затеял скандал на торговой площади ради леденца, вокруг собралась толпа, и полицейские попросили хозяина лавки открыть её во время сиесты и подарить мальчику сладость.", "materials": "Он добивался своего капризами и симуляцией, всегда стремился выделиться и привлечь к себе внимание.", diff --git a/apps/school/migrations/0012_auto_20180417_1344.py b/apps/school/migrations/0012_auto_20180417_1344.py new file mode 100644 index 00000000..4b0d1032 --- /dev/null +++ b/apps/school/migrations/0012_auto_20180417_1344.py @@ -0,0 +1,17 @@ +# Generated by Django 2.0.3 on 2018-04-17 10:44 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('school', '0011_schoolschedule_short_description'), + ] + + operations = [ + migrations.AlterModelOptions( + name='schoolscheduleimage', + options={'ordering': ('-created_at',), 'verbose_name': 'Изображение работ', 'verbose_name_plural': 'Изображения работ'}, + ), + ] diff --git a/apps/school/models.py b/apps/school/models.py index 867ad447..6527ccc4 100644 --- a/apps/school/models.py +++ b/apps/school/models.py @@ -1,9 +1,10 @@ from django.db import models +from django.utils.timezone import now from project.mixins import BaseModel, DeactivatedMixin from apps.content.models import ImageObject -from apps.course.models import Comment +from apps.payment import models as payment_models class SchoolSchedule(models.Model): @@ -16,14 +17,20 @@ class SchoolSchedule(models.Model): (6, 'суббота'), (7, 'воскресенье'), ) - weekday = models.PositiveSmallIntegerField('День недели', choices=WEEKDAY_CHOICES, unique=True) + weekday = models.PositiveSmallIntegerField( + 'День недели', choices=WEEKDAY_CHOICES, unique=True + ) title = models.CharField('Заголовок', default='', max_length=100, db_index=True) - short_description = models.CharField('Короткое описание', default='', max_length=100, db_index=True) + short_description = models.CharField( + 'Короткое описание', default='', max_length=100, db_index=True + ) description = models.TextField('Описание') materials = models.TextField('Материалы') age = models.PositiveSmallIntegerField('Возраст', default=0) month_price = models.DecimalField('Цена', max_digits=8, decimal_places=2, default=0) - day_discount = models.DecimalField('Скидка, в валюте', max_digits=8, decimal_places=2, default=0) + day_discount = models.DecimalField( + 'Скидка, в валюте', max_digits=8, decimal_places=2, default=0 + ) start_at = models.TimeField('Начало урока', null=True) class Meta: @@ -34,16 +41,45 @@ class SchoolSchedule(models.Model): def __str__(self): return dict(self.WEEKDAY_CHOICES).get(self.weekday, '') + def is_online(self): + return now().isoweekday() == self.weekday and now().time() >= self.start_at + + def is_purchased(self): + try: + school_payment = payment_models.SchoolPayment.objects.get( + weekdays__contains=[self.weekday], + date_start__gte=now().date(), + date_end__lte=now().date(), + ) + except payment_models.SchoolPayment.DoesNotExist: + return False + else: + return school_payment.is_deliverable() + + def current_live_lesson(self): + now_time = now() + weekday = self.weekday + live_lesson = LiveLesson.objects.filter( + date__week_day=weekday + 1 if weekday % 7 else 1, + date__gte=now_time.date(), + ).first() + return live_lesson + class SchoolScheduleImage(models.Model): schoolschedule = models.ForeignKey( - SchoolSchedule, on_delete=models.CASCADE, - verbose_name='День занятия', related_name='schoolschedule_images' + SchoolSchedule, + on_delete=models.CASCADE, + verbose_name='День занятия', + related_name='schoolschedule_images', ) img = models.ForeignKey( - ImageObject, related_name='schoolschedule_images', - verbose_name='Объект изображения', on_delete=models.CASCADE, - null=True, blank=True, + ImageObject, + related_name='schoolschedule_images', + verbose_name='Объект изображения', + on_delete=models.CASCADE, + null=True, + blank=True, ) created_at = models.DateTimeField(auto_now_add=True) @@ -61,9 +97,12 @@ class LiveLesson(BaseModel, DeactivatedMixin): stream = models.URLField('Ссылка на VIMEO', default='', blank=True) date = models.DateField(null=True, blank=True) cover = models.ForeignKey( - ImageObject, related_name='livelesson_covers', - verbose_name='Обложка урока школы', on_delete=models.CASCADE, - null=True, blank=True, + ImageObject, + related_name='livelesson_covers', + verbose_name='Обложка урока школы', + on_delete=models.CASCADE, + null=True, + blank=True, ) created_at = models.DateTimeField(auto_now_add=True) diff --git a/apps/school/templates/blocks/schedule.html b/apps/school/templates/blocks/schedule.html index da3c2db9..ae7f231d 100644 --- a/apps/school/templates/blocks/schedule.html +++ b/apps/school/templates/blocks/schedule.html @@ -1,31 +1,44 @@ {% load static %} +{% load thumbnail %}
+ {% thumbnail current_live_lesson.cover.image "70x70" crop="center" as im %}
+
+ {% endthumbnail %}