diff --git a/api/v1/serializers/school.py b/api/v1/serializers/school.py
index e25f06d6..caceba24 100644
--- a/api/v1/serializers/school.py
+++ b/api/v1/serializers/school.py
@@ -56,6 +56,7 @@ class SchoolScheduleSerializer(serializers.ModelSerializer):
'schoolschedule_images',
'cover',
'trial_lesson',
+ 'is_camp',
)
read_only_fields = (
@@ -116,6 +117,7 @@ class SchoolScheduleSerializerImg(serializers.ModelSerializer):
'schoolschedule_images',
'cover',
'trial_lesson',
+ 'is_camp',
)
read_only_fields = (
diff --git a/apps/payment/models.py b/apps/payment/models.py
index f932765a..827332ac 100644
--- a/apps/payment/models.py
+++ b/apps/payment/models.py
@@ -220,6 +220,7 @@ class Payment(PolymorphicModel):
add_days = False
school_schedules = SchoolSchedule.objects.filter(
weekday__in=weekdays,
+ is_camp=False,
)
if add_days:
date_end = prev_school_payment.date_end
diff --git a/apps/school/admin.py b/apps/school/admin.py
index 0f995b9e..59807de1 100644
--- a/apps/school/admin.py
+++ b/apps/school/admin.py
@@ -23,6 +23,7 @@ class SchoolScheduleAdmin(admin.ModelAdmin):
'weekday',
'title',
'month_price',
+ 'is_camp',
)
diff --git a/apps/school/migrations/0024_schoolschedule_is_camp.py b/apps/school/migrations/0024_schoolschedule_is_camp.py
new file mode 100644
index 00000000..7cc9e40c
--- /dev/null
+++ b/apps/school/migrations/0024_schoolschedule_is_camp.py
@@ -0,0 +1,18 @@
+# Generated by Django 2.0.7 on 2019-05-15 11:39
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('school', '0023_livelesson_is_camp'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='schoolschedule',
+ name='is_camp',
+ field=models.BooleanField(default=False),
+ ),
+ ]
diff --git a/apps/school/migrations/0025_auto_20190515_1207.py b/apps/school/migrations/0025_auto_20190515_1207.py
new file mode 100644
index 00000000..65674d8d
--- /dev/null
+++ b/apps/school/migrations/0025_auto_20190515_1207.py
@@ -0,0 +1,22 @@
+# Generated by Django 2.0.7 on 2019-05-15 12:07
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('school', '0024_schoolschedule_is_camp'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='schoolschedule',
+ name='weekday',
+ field=models.PositiveSmallIntegerField(choices=[(1, 'понедельник'), (2, 'вторник'), (3, 'среда'), (4, 'четверг'), (5, 'пятница'), (6, 'суббота'), (7, 'воскресенье')], verbose_name='День недели'),
+ ),
+ migrations.AlterUniqueTogether(
+ name='schoolschedule',
+ unique_together={('weekday', 'is_camp')},
+ ),
+ ]
diff --git a/apps/school/models.py b/apps/school/models.py
index bccaa7f7..7aa9a83e 100644
--- a/apps/school/models.py
+++ b/apps/school/models.py
@@ -25,7 +25,7 @@ class SchoolSchedule(models.Model):
(7, 'воскресенье'),
)
weekday = models.PositiveSmallIntegerField(
- 'День недели', choices=WEEKDAY_CHOICES, unique=True
+ 'День недели', choices=WEEKDAY_CHOICES,
)
title = models.CharField('Заголовок', default='', max_length=100, db_index=True)
short_description = models.CharField(
@@ -48,11 +48,13 @@ class SchoolSchedule(models.Model):
blank=True,
)
trial_lesson = models.URLField(default='', blank=True)
+ is_camp = models.BooleanField(default=False)
class Meta:
ordering = ('weekday',)
verbose_name = 'Расписание'
verbose_name_plural = 'Расписания'
+ unique_together = (('weekday', 'is_camp'),)
def __str__(self):
return dict(self.WEEKDAY_CHOICES).get(self.weekday, '')
@@ -183,7 +185,7 @@ class LiveLesson(BaseModel, DeactivatedMixin):
@cached_property
def school_schedule(self):
try:
- return SchoolSchedule.objects.get(weekday=self.date.isoweekday())
+ return SchoolSchedule.objects.get(weekday=self.date.isoweekday(), is_camp=self.is_camp)
except SchoolSchedule.DoesNotExist:
return None
diff --git a/apps/school/templates/drawing_camp/promo.html b/apps/school/templates/drawing_camp/promo.html
index 18d1ec78..c8b747ca 100644
--- a/apps/school/templates/drawing_camp/promo.html
+++ b/apps/school/templates/drawing_camp/promo.html
@@ -2,7 +2,7 @@
- Рисовальный лагерь — продолжение нашей онлайн-колы только летом.
+ Рисовальный лагерь — продолжение нашей онлайн-школы только летом.
Понедельник, среда и пятница ждем вас в 17:00 (мск). Уроки хранятся 7 дней.
diff --git a/apps/school/views.py b/apps/school/views.py
index f494e7f3..37a63dc2 100644
--- a/apps/school/views.py
+++ b/apps/school/views.py
@@ -154,7 +154,7 @@ class SchoolView(TemplateView):
date_now = now().date()
now_time = now()
try:
- school_schedule = SchoolSchedule.objects.get(weekday=now_time.isoweekday())
+ school_schedule = SchoolSchedule.objects.get(weekday=now_time.isoweekday(), is_camp=False)
except SchoolSchedule.DoesNotExist:
online = False
else:
@@ -165,7 +165,7 @@ class SchoolView(TemplateView):
school_schedule.current_live_lesson
)
- school_schedules = SchoolSchedule.objects.all()
+ school_schedules = SchoolSchedule.objects.filter(is_camp=False)
try:
school_schedules_sorted = sorted(school_schedules,
key=lambda ss: ss.current_live_lesson and ss.current_live_lesson.date)
@@ -275,7 +275,7 @@ class DrawingCampView(TemplateView):
next_lesson_start = None
if now_time.isoweekday() in DrawingCampPayment.WEEKDAYS:
try:
- school_schedule = SchoolSchedule.objects.get(weekday=now_time.isoweekday())
+ school_schedule = SchoolSchedule.objects.get(weekday=now_time.isoweekday(), is_camp=True)
except SchoolSchedule.DoesNotExist:
online = False
else:
@@ -290,12 +290,12 @@ class DrawingCampView(TemplateView):
next_lesson_start = next_schedule.start_at_humanize
if not next_schedule:
next_camp_lesson = LiveLesson.objects.filter(date__gt=date_now, is_camp=True).first()
- if next_camp_lesson:
+ if next_camp_lesson and next_camp_lesson.school_schedule:
next_schedule = next_camp_lesson.school_schedule
next_lesson_start = arrow.get(datetime.combine(next_camp_lesson.date, next_schedule.start_at),
settings.TIME_ZONE).humanize(locale='ru')
- school_schedules = SchoolSchedule.objects.filter(weekday__in=DrawingCampPayment.WEEKDAYS)
+ school_schedules = SchoolSchedule.objects.filter(weekday__in=DrawingCampPayment.WEEKDAYS, is_camp=True)
try:
school_schedules_sorted = sorted(school_schedules,
key=lambda ss: ss.current_camp_lesson and ss.current_camp_lesson.date)
diff --git a/project/views.py b/project/views.py
index 485d7a0c..93a87f39 100644
--- a/project/views.py
+++ b/project/views.py
@@ -30,7 +30,7 @@ class IndexView(TemplateView):
now_time = now()
try:
- school_schedule = SchoolSchedule.objects.get(weekday=now_time.isoweekday())
+ school_schedule = SchoolSchedule.objects.get(weekday=now_time.isoweekday(), is_camp=True)
except SchoolSchedule.DoesNotExist:
online = False
online_coming_soon = False
@@ -40,13 +40,13 @@ class IndexView(TemplateView):
online = (
school_schedule.start_at <= now_time.time() and
(end_at + timedelta(hours=1)).time() >= now_time.time() and
- school_schedule.current_live_lesson
+ school_schedule.current_camp_lesson
)
online_coming_soon = (
school_schedule.start_at > now_time.time() and
datetime.combine(datetime.today(), school_schedule.start_at) - timedelta(hours=12)
<= datetime.combine(datetime.today(), now_time.time()) and
- school_schedule.current_live_lesson
+ school_schedule.current_camp_lesson
)
date_now = now_time.date()
if self.request.user.is_authenticated:
@@ -113,7 +113,7 @@ class IndexView(TemplateView):
'is_purchased': camp_payment_exists, # school_payment_exists,
'camp_price': DrawingCampPayment.MONTH_PRICE,
'min_school_price': SchoolSchedule.objects.aggregate(Min('month_price'))['month_price__min'],
- 'school_schedules': SchoolSchedule.objects.filter(weekday__in=DrawingCampPayment.WEEKDAYS),
+ 'school_schedules': SchoolSchedule.objects.filter(weekday__in=DrawingCampPayment.WEEKDAYS, is_camp=True),
'school_schedules_purchased': DrawingCampPayment.WEEKDAYS if camp_payment_exists else [], # set(school_schedules_purchased),
'teachers': User.objects.filter(role=User.TEACHER_ROLE, show_in_mainpage=True),
'works_count': Payment.objects.filter(status__in=Payment.PW_PAID_STATUSES).count() * 7,
@@ -134,7 +134,7 @@ class SchoolSchedulesView(TemplateView):
def get_context_data(self):
context = super().get_context_data()
- context['school_schedules'] = SchoolSchedule.objects.all()
+ context['school_schedules'] = SchoolSchedule.objects.filter(is_camp=True)
return context