Merge branch 'feature/drawing-camp' into 'master'

рисовальный лагерь

See merge request lilschool/site!298
remotes/origin/feature/cat-title-links-24-05-19
Danil 7 years ago
commit b0a6e91008
  1. 2
      api/v1/serializers/school.py
  2. 1
      apps/payment/models.py
  3. 1
      apps/school/admin.py
  4. 18
      apps/school/migrations/0024_schoolschedule_is_camp.py
  5. 22
      apps/school/migrations/0025_auto_20190515_1207.py
  6. 6
      apps/school/models.py
  7. 2
      apps/school/templates/drawing_camp/promo.html
  8. 10
      apps/school/views.py
  9. 10
      project/views.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 = (

@ -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

@ -23,6 +23,7 @@ class SchoolScheduleAdmin(admin.ModelAdmin):
'weekday',
'title',
'month_price',
'is_camp',
)

@ -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),
),
]

@ -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')},
),
]

@ -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

@ -2,7 +2,7 @@
<div class="main main_default" style="background-image: url({% static 'img/bg-2.jpg' %});">
<div class="main__center center">
<div class="main__title">
<span class="main__bold">Рисовальный лагерь</span> — продолжение нашей онлайн-колы только летом.
<span class="main__bold">Рисовальный лагерь</span> — продолжение нашей онлайн-школы только летом.
Понедельник, среда и пятница ждем вас в 17:00 (мск). Уроки хранятся 7 дней.
</div>
<div class="main__actions">

@ -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)

@ -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

Loading…
Cancel
Save