From 17ae03f6b6bc3b267b4f825fbc460231c4134a92 Mon Sep 17 00:00:00 2001 From: Sanasol Date: Sat, 9 Jun 2018 20:01:04 +0300 Subject: [PATCH] some fixes --- .../templates/notification/email/_base.html | 2 +- .../templates/payment/payment_success.html | 2 +- apps/payment/views.py | 6 +- apps/school/templates/blocks/promo.html | 12 ++-- apps/school/templates/school/school.html | 5 -- .../templates/school/summer_school.html | 15 ++++ apps/school/templates/summer/about.html | 26 +++++++ apps/school/templates/summer/advantages.html | 44 ++++++++++++ apps/school/templates/summer/online.html | 12 ++++ apps/school/templates/summer/promo.html | 60 ++++++++++++++++ .../templates/summer/schedule_purchased.html | 69 ++++++++++++++++++ apps/school/urls.py | 3 +- apps/school/views.py | 66 +++++++++++++++-- apps/user/templates/user/become-author.html | 4 +- apps/user/views.py | 11 +-- project/templates/blocks/about.html | 12 ++-- project/templates/blocks/advantages.html | 8 +-- project/templates/blocks/arts.html | 72 +++++++++---------- project/templates/blocks/footer.html | 9 +-- project/templates/blocks/gallery.html | 2 +- project/templates/blocks/header.html | 9 ++- project/templates/blocks/live.html | 4 +- project/templates/blocks/popup_subscribe.html | 36 ++++++++++ project/templates/blocks/promo.html | 10 ++- project/templates/blocks/teachers.html | 4 +- project/templates/lilcity/index.html | 1 + .../templates/lilcity/subscribe_success.html | 12 ++++ project/templates/lilcity/terms.html | 4 +- project/urls.py | 1 + web/src/email/index.html | 2 +- web/src/sass/_common.sass | 14 +++- web/src/templates/partials/_footer.pug | 2 +- 32 files changed, 444 insertions(+), 95 deletions(-) create mode 100644 apps/school/templates/school/summer_school.html create mode 100644 apps/school/templates/summer/about.html create mode 100644 apps/school/templates/summer/advantages.html create mode 100644 apps/school/templates/summer/online.html create mode 100644 apps/school/templates/summer/promo.html create mode 100644 apps/school/templates/summer/schedule_purchased.html create mode 100644 project/templates/blocks/popup_subscribe.html create mode 100644 project/templates/lilcity/subscribe_success.html diff --git a/apps/notification/templates/notification/email/_base.html b/apps/notification/templates/notification/email/_base.html index 8e07714f..a84b3351 100644 --- a/apps/notification/templates/notification/email/_base.html +++ b/apps/notification/templates/notification/email/_base.html @@ -22,7 +22,7 @@ -
Первая онлайн-школа креативного мышления Lil City School
+
Первая онлайн-школа креативного мышления Lil School
diff --git a/apps/payment/templates/payment/payment_success.html b/apps/payment/templates/payment/payment_success.html index 7d174018..670678fa 100644 --- a/apps/payment/templates/payment/payment_success.html +++ b/apps/payment/templates/payment/payment_success.html @@ -5,7 +5,7 @@ {% if school %}
Вы успешно приобрели доступ к урокам онлайн-школы!
- ПЕРЕЙТИ К ШКОЛЕ + ПЕРЕЙТИ К ШКОЛЕ
{% else %}
Вы успешно приобрели курс!
diff --git a/apps/payment/views.py b/apps/payment/views.py index 7d9aeded..66a52935 100644 --- a/apps/payment/views.py +++ b/apps/payment/views.py @@ -95,12 +95,12 @@ class SchoolBuyView(TemplateView): add_days = 'add_days' in request.GET if not weekdays: messages.error(request, 'Выберите несколько дней недели.') - return redirect('school:school') + return redirect('school:summer-school') try: weekdays = [int(weekday) for weekday in weekdays] except ValueError: messages.error(request, 'Ошибка выбора дней недели.') - return redirect('school:school') + return redirect('school:summer-school') if add_days: _school_payment = SchoolPayment.objects.get( user=request.user, @@ -117,7 +117,7 @@ class SchoolBuyView(TemplateView): ) if school_payment.amount <= 0: messages.error(request, 'Выбранные дни отсутствуют в оставшемся периоде подписки') - return redirect(reverse_lazy('school:school')) + return redirect(reverse_lazy('school:summer-school')) else: school_payment = SchoolPayment.objects.create( user=request.user, diff --git a/apps/school/templates/blocks/promo.html b/apps/school/templates/blocks/promo.html index c225e36c..2bdd1282 100644 --- a/apps/school/templates/blocks/promo.html +++ b/apps/school/templates/blocks/promo.html @@ -5,14 +5,10 @@ Lil City School — первая образовательная онлайн-платформа креативного мышления для детей
купить доступ от {{ min_school_price }} руб./месяц + data-popup=".js-popup-subscribe" + class="main__btn btn" + href="#" + >Оставить заявку
diff --git a/apps/school/templates/school/school.html b/apps/school/templates/school/school.html index a0bc4978..f69f9ecb 100644 --- a/apps/school/templates/school/school.html +++ b/apps/school/templates/school/school.html @@ -1,15 +1,10 @@ {% extends "templates/lilcity/index.html" %} {% load static %} {% block title %}Онлайн-школа LilCity{% endblock title%} {% block content %} -{% if not is_purchased %} {% include "../blocks/promo.html" %} {% include "../blocks/about.html" %} {% include "../blocks/advantages.html" %} {% include "../blocks/online.html" %} -{% include "../blocks/schedule.html" %} {% include "templates/blocks/game.html" %} {% include "templates/blocks/partners.html" %} -{% else %} -{% include "../blocks/schedule_purchased.html" %} -{% endif %} {% endblock %} diff --git a/apps/school/templates/school/summer_school.html b/apps/school/templates/school/summer_school.html new file mode 100644 index 00000000..133f8d8b --- /dev/null +++ b/apps/school/templates/school/summer_school.html @@ -0,0 +1,15 @@ +{% extends "templates/lilcity/index.html" %} {% load static %} +{% block title %}Онлайн-школа LilCity{% endblock title%} +{% block content %} +{% if not is_purchased %} +{% include "../summer/promo.html" %} +{% include "../summer/about.html" %} +{% include "../summer/advantages.html" %} +{% include "../summer/online.html" %} +{% include "../blocks/schedule.html" %} +{% include "templates/blocks/game.html" %} +{% include "templates/blocks/partners.html" %} +{% else %} +{% include "../summer/schedule_purchased.html" %} +{% endif %} +{% endblock %} diff --git a/apps/school/templates/summer/about.html b/apps/school/templates/summer/about.html new file mode 100644 index 00000000..fbbb25d7 --- /dev/null +++ b/apps/school/templates/summer/about.html @@ -0,0 +1,26 @@ +{% load static %} +
+
+
О школе
+
+
+ +
+
+
+

С раннего возраста мы стремимся развить в детях креативность, умение думать и анализировать, работать в смешанных + техниках и всевозможными материалами. Каждый урок интересный и уникальный.

+

Для раскрытия творческого потенциала создаем благоприятные условия которые вдохновляют к развитию. Наша школа создает + необходимую среду, в которой маленькое семечко способностей и желания рисовать вырастет в могучее дерево безграничного + потенциала. +

+

Наши ученики становятся осознанными, уверенными и творческими личностями.

+

Они способны решать сложные задачи благодаря воображению.

+
+
- Sasha Kru, CEO и основатель + Lil.City +
+
+
+
+
diff --git a/apps/school/templates/summer/advantages.html b/apps/school/templates/summer/advantages.html new file mode 100644 index 00000000..de2bd91e --- /dev/null +++ b/apps/school/templates/summer/advantages.html @@ -0,0 +1,44 @@ +{% load static %} +
+
+
Преимущества
+
+
+
+ + + +
+
Доступность
+
Учитесь, не выходя из дома. С активной жизнью в больших городах, времени для образование остается не много. Маленьким городам, наоборот, не хватает разнообразия мегаполисов.
+
+
+
+ + + +
+
Стоимость
+
Онлайн-образование дешевле и эффективнее. Вы сами выбираете сколько платить.
+
+
+
+ + + +
+
Свобода перемещений
+
Это важный критерий для родителей. С онлайн-образованием собирать, одевать и стоять в бесконечных пробках теперь не нужно.
+
+
+
+ + + +
+
Выбор преподавателя
+
Личные аккаунты Инстаграм также доступны, чтобы узнать о творчестве, мыслях и интересах. Принять решение у какого преподавателя учиться теперь просто.
+
+
+
+
\ No newline at end of file diff --git a/apps/school/templates/summer/online.html b/apps/school/templates/summer/online.html new file mode 100644 index 00000000..3599afcc --- /dev/null +++ b/apps/school/templates/summer/online.html @@ -0,0 +1,12 @@ +{% load static %} + +
+
ПРЯМОЙ ЭФИР
+
В 17.00 (по Мск)
+
Понедельник, среда, пятница.
+
+ + + СМОТРЕТЬ ПРИМЕР ЭФИРА
+
+
diff --git a/apps/school/templates/summer/promo.html b/apps/school/templates/summer/promo.html new file mode 100644 index 00000000..24f2b286 --- /dev/null +++ b/apps/school/templates/summer/promo.html @@ -0,0 +1,60 @@ +{% load static %} +
+
+
+ Lil School — первая образовательная онлайн-платформа креативного мышления для детей +
+
+ Присоединяйтесь в Рисовальный лагерь +
+ +
+
+
+ + + +
+
Прямой эфир
+
Понедельник, среда, пятница
+
+
+
+ + + +
+
В 17:00
+
По московскому времени
+
+
+
+ + + +
+
12 уроков
+
В разных техниках
+
+
+
+ + + +
+
Запись эфира
+
Хранится 7 дней
+
+
+
+
diff --git a/apps/school/templates/summer/schedule_purchased.html b/apps/school/templates/summer/schedule_purchased.html new file mode 100644 index 00000000..467be723 --- /dev/null +++ b/apps/school/templates/summer/schedule_purchased.html @@ -0,0 +1,69 @@ +{% load static %} {% load thumbnail %} +
+
+ {% include 'templates/blocks/messages.html' %} +
+
+ +
+
+ {% if not profile %} +
+ {% if is_previous %} +
Запись уроков
+ {% else %} +
Новые уроки
+ {% endif %} + +
+ {% endif %} +
+
+ {% if is_previous and not live_lessons_exists %} + Записей уроков пока нет + {% else %} + {% for school_schedule in school_schedules %} + {% if is_previous %} + {% if school_schedule.previous_live_lesson in live_lessons %} + {% include './_schedule_purchased_item.html' with school_schedule=school_schedule live_lesson=school_schedule.previous_live_lesson %} + {% endif %} + {% else %} + {% include './_schedule_purchased_item.html' with school_schedule=school_schedule live_lesson=school_schedule.current_live_lesson %} + {% endif %} + {% endfor %} + {% endif %} +
+
+ {% comment %} previous week schedules {% endcomment %} +
+ +
+
+
+
+
+{% include './last_courses.html' %} diff --git a/apps/school/urls.py b/apps/school/urls.py index 59973c6d..47361f96 100644 --- a/apps/school/urls.py +++ b/apps/school/urls.py @@ -3,11 +3,12 @@ from django.urls import path, include from .views import ( LiveLessonsView, LiveLessonEditView, LiveLessonsDetailView, SchoolView, - SchoolSchedulesPrintView, + SchoolSchedulesPrintView, SummerSchoolView, ) urlpatterns = [ path('', SchoolView.as_view(), name='school'), + path('summer', SummerSchoolView.as_view(), name='summer-school'), path('schedules/print', SchoolSchedulesPrintView.as_view(), name='school_schedules-print'), path('lessons/', LiveLessonsView.as_view(), name='lessons'), path('lessons/create', LiveLessonEditView.as_view(), name='lessons-create'), diff --git a/apps/school/views.py b/apps/school/views.py index 044f5906..b17bd1d2 100644 --- a/apps/school/views.py +++ b/apps/school/views.py @@ -161,10 +161,68 @@ class SchoolView(TemplateView): 'course_items': Course.objects.filter(status=Course.PUBLISHED)[:6], 'is_purchased': school_payment_exists, 'min_school_price': SchoolSchedule.objects.aggregate(Min('month_price'))['month_price__min'], - 'school_schedules': SchoolSchedule.objects.annotate( - calk=F('weekday') - now().isoweekday(), - weight=(7 + F('calk') % 7) % 7, - ).order_by('weight'), + 'school_schedules': SchoolSchedule.objects.all(), + 'school_schedules_purchased': school_schedules_purchased, + 'subscription_ends': school_payment.filter(add_days=False).first().date_end if school_payment_exists else None, + }) + return context + +class SummerSchoolView(TemplateView): + template_name = 'school/summer_school.html' + + def get_context_data(self): + context = super().get_context_data() + is_previous = 'is_previous' in self.request.GET + date_now = now().date() + now_time = now() + try: + school_schedule = SchoolSchedule.objects.get(weekday=now_time.isoweekday()) + except SchoolSchedule.DoesNotExist: + online = False + else: + end_at = datetime.combine(now_time.today(), school_schedule.start_at) + online = ( + school_schedule.start_at <= now_time.time() and + (end_at + timedelta(hours=2)).time() >= now_time.time() and + school_schedule.current_live_lesson() + ) + if self.request.user.is_authenticated: + school_payment = SchoolPayment.objects.filter( + user=self.request.user, + status__in=[ + Pingback.PINGBACK_TYPE_REGULAR, + Pingback.PINGBACK_TYPE_GOODWILL, + Pingback.PINGBACK_TYPE_RISK_REVIEWED_ACCEPTED, + ], + date_start__lte=date_now, + date_end__gte=date_now + ) + school_payment_exists = school_payment.exists() + school_schedules_purchased = school_payment.annotate( + joined_weekdays=Func(F('weekdays'), function='unnest',) + ).values_list('joined_weekdays', flat=True).distinct() + else: + school_payment_exists = False + school_schedules_purchased = [] + if school_payment_exists and is_previous: + live_lessons = LiveLesson.objects.filter( + date__gte=school_payment.last().date_start, + date__range=[(now_time - timedelta(days=8)).date(), (now_time - timedelta(days=1)).date()], + deactivated_at__isnull=True, + ) + live_lessons_exists = live_lessons.exists() + else: + live_lessons = None + live_lessons_exists = False + context.update({ + 'online': online, + 'live_lessons': live_lessons, + 'live_lessons_exists': live_lessons_exists, + 'is_previous': is_previous, + 'course_items': Course.objects.filter(status=Course.PUBLISHED)[:6], + 'is_purchased': school_payment_exists, + 'min_school_price': SchoolSchedule.objects.aggregate(Min('month_price'))['month_price__min'], + 'school_schedules': SchoolSchedule.objects.all(), 'school_schedules_purchased': school_schedules_purchased, 'subscription_ends': school_payment.filter(add_days=False).first().date_end if school_payment_exists else None, }) diff --git a/apps/user/templates/user/become-author.html b/apps/user/templates/user/become-author.html index 92e7c054..3dd6f190 100644 --- a/apps/user/templates/user/become-author.html +++ b/apps/user/templates/user/become-author.html @@ -44,9 +44,9 @@ {% endfor %}
-
FACEBOOK
+
Ссылка на портфолио
- +
{% for error in form.facebook.errors %}
{{ error }}
diff --git a/apps/user/views.py b/apps/user/views.py index 5af22e43..81f5f34f 100644 --- a/apps/user/views.py +++ b/apps/user/views.py @@ -85,10 +85,7 @@ class UserView(DetailView): context['subscription_ends'] = school_payment.last().date_end context['school_schedules'] = SchoolSchedule.objects.filter( weekday__in=school_schedules_purchased if school_payment.exists() else [], - ).annotate( - calk=F('weekday') - now().isoweekday(), - weight=(7 + F('calk') % 7) % 7, - ).order_by('weight') + ).all() context['all_school_schedules'] = SchoolSchedule.objects.all() return context @@ -103,6 +100,10 @@ class SubscribeView(View): return redirect(refferer) email = request.POST.get('email', None) if email: + if EmailSubscription.objects.filter(email=email).exists(): + messages.error(request, 'Вы уже подписаны!') + return redirect(refferer) + email_subscription = EmailSubscription.objects.create( email=email, ) @@ -110,7 +111,7 @@ class SubscribeView(View): SubscriptionCategory.objects.filter(auto_add=True) ) messages.info(request, 'Вы подписаны на новости.') - return redirect(refferer) + return redirect('subscribe-success') else: messages.error(request, 'Введите адрес электронной почты.') return redirect(refferer) diff --git a/project/templates/blocks/about.html b/project/templates/blocks/about.html index 8008c913..667430db 100644 --- a/project/templates/blocks/about.html +++ b/project/templates/blocks/about.html @@ -13,7 +13,7 @@
Прямой эфир
-
С понедельника по пятницу кроме выходных
+
Понедельник, среда, пятница
@@ -21,7 +21,7 @@
-
Ежедневно в 17:00
+
В 17:00
По московскому времени
@@ -30,8 +30,8 @@
-
7 предметов
-
на каждый день
+
12 уроков
+
В разных техниках
@@ -39,8 +39,8 @@
-
Посмотреть
-
пропущенные дни
+
Запись эфира
+
Хранится 7 дней
diff --git a/project/templates/blocks/advantages.html b/project/templates/blocks/advantages.html index 7538d3cd..767496ef 100644 --- a/project/templates/blocks/advantages.html +++ b/project/templates/blocks/advantages.html @@ -10,7 +10,7 @@
Доступность
-
Учитесь, не выходя из дома
+
Учитесь, не выходя из дома. С активной жизнью в больших городах, времени для образование остается не много. Маленьким городам, наоборот, не хватает разнообразия мегаполисов.
@@ -19,7 +19,7 @@
Стоимость
-
Онлайн-образование дешевле
+
Онлайн-образование дешевле и эффективнее. Вы сами выбираете сколько платить.
@@ -28,7 +28,7 @@
Свобода перемещений
-
Доступность до проф. уроков без пробок, сборов и лишней потери времени
+
Это важный критерий для родителей. С онлайн-образованием собирать, одевать и стоять в бесконечных пробках теперь не нужно.
@@ -37,7 +37,7 @@
Выбор преподавателя
-
Описание элемента
+
Личные аккаунты Инстаграм также доступны, чтобы узнать о творчестве, мыслях и интересах. Принять решение у какого преподавателя учиться теперь просто.
diff --git a/project/templates/blocks/arts.html b/project/templates/blocks/arts.html index e88b9408..397aa52c 100644 --- a/project/templates/blocks/arts.html +++ b/project/templates/blocks/arts.html @@ -1,37 +1,37 @@ {% load static %} -
-
-
-
-
-
Персонаж
-
-
-
-
-
Развитие креативного мышления
-
-
-
-
-
Акварельная живопись
-
-
-
-
-
Пластилиновая живопись
-
-
-
-
-
История искусств
-
-
-
-
-
Коллаж
-
-
-
-
-
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/project/templates/blocks/footer.html b/project/templates/blocks/footer.html index 9dc918e0..b586ffc9 100644 --- a/project/templates/blocks/footer.html +++ b/project/templates/blocks/footer.html @@ -4,7 +4,7 @@