diff --git a/api/v1/serializers/contest.py b/api/v1/serializers/contest.py
index dc5b88fd..9d2e63c4 100644
--- a/api/v1/serializers/contest.py
+++ b/api/v1/serializers/contest.py
@@ -1,3 +1,4 @@
+from django.contrib.auth import get_user_model
from rest_framework import serializers
from api.v1.serializers.content import ContentSerializer, ContentCreateSerializer, ImageObjectSerializer
@@ -5,6 +6,8 @@ from api.v1.serializers.mixins import DispatchContentMixin
from apps.content.models import (Contest, ContestWork)
+User = get_user_model()
+
class ContestSerializer(serializers.ModelSerializer):
cover = ImageObjectSerializer()
@@ -12,7 +15,8 @@ class ContestSerializer(serializers.ModelSerializer):
class Meta:
model = Contest
- fields = '__all__'
+ fields = ['title', 'description', 'slug', 'cover',
+ 'date_start', 'date_end', 'active', 'content', 'finished']
class ContestCreateSerializer(DispatchContentMixin, serializers.ModelSerializer):
@@ -52,11 +56,14 @@ class ContestWorkSerializer(serializers.ModelSerializer):
'created_at', 'likes', 'user_liked', 'img_width', 'img_height']
def get_likes(self, instance):
- return instance.likes.count()
+ return instance.likes.filter(user__is_active=True).count()
def get_user_liked(self, instance):
- user = self.context['request'].user
- return instance.likes.filter(user=user).exists() if user.is_authenticated else False
+ # FIXME
+ user = self.context['request'].query_params.get('current_user')
+ if user:
+ user = User.objects.get(pk=user)
+ return instance.likes.filter(user=user).exists() if user else False
class ContestWorkCreateSerializer(serializers.ModelSerializer):
diff --git a/api/v1/serializers/course.py b/api/v1/serializers/course.py
index fe06ca53..4382aae4 100644
--- a/api/v1/serializers/course.py
+++ b/api/v1/serializers/course.py
@@ -71,14 +71,10 @@ class LikeSerializer(serializers.ModelSerializer):
class LikeCreateSerializer(serializers.ModelSerializer):
- OBJ_TYPE_CONTEST_WORK = 'contest_work'
-
- obj_type = serializers.CharField(required=True)
- obj_id = serializers.IntegerField(required=True)
class Meta:
model = Like
- fields = ['user', 'obj_type', 'obj_id']
+ fields = ['user']
def create(self, validated_data):
# FIXME
@@ -86,20 +82,9 @@ class LikeCreateSerializer(serializers.ModelSerializer):
user = validated_data.get('user')
else:
user = self.context['request'].user
- if not user: # FIXME and user.is_authenticated):
- return Like()
- obj_type = validated_data.pop('obj_type')
- obj_id = validated_data.pop('obj_id')
client_ip, is_routable = get_client_ip(self.context['request'])
- if obj_type == self.OBJ_TYPE_CONTEST_WORK:
- contest_work = ContestWork.objects.get(pk=obj_id)
- # FIXME in prod: fixed
- if contest_work.user == user or contest_work.likes.filter(user=user).exists():
- # if contest_work.likes.filter(user=user).exists():
- return Like()
- like = Like.objects.create(user=user, ip=client_ip)
- contest_work.likes.add(like)
- return like
+ like = Like.objects.create(user=user, ip=client_ip)
+ return like
def to_representation(self, instance):
return LikeSerializer(instance, context=self.context).to_representation(instance)
diff --git a/api/v1/serializers/school.py b/api/v1/serializers/school.py
index 751bb6c2..4f8cd318 100644
--- a/api/v1/serializers/school.py
+++ b/api/v1/serializers/school.py
@@ -54,6 +54,8 @@ class SchoolScheduleSerializer(serializers.ModelSerializer):
'day_discount',
'start_at',
'schoolschedule_images',
+ 'cover',
+ 'trial_lesson',
)
read_only_fields = (
@@ -96,6 +98,7 @@ class SchoolScheduleSerializerImg(serializers.ModelSerializer):
child=GalleryImageSerializer(),
required=False,
)
+ cover = ImageObjectSerializer()
class Meta:
model = SchoolSchedule
@@ -111,6 +114,8 @@ class SchoolScheduleSerializerImg(serializers.ModelSerializer):
'day_discount',
'start_at',
'schoolschedule_images',
+ 'cover',
+ 'trial_lesson',
)
read_only_fields = (
diff --git a/api/v1/serializers/user.py b/api/v1/serializers/user.py
index 888806d0..bbb5e6b5 100644
--- a/api/v1/serializers/user.py
+++ b/api/v1/serializers/user.py
@@ -42,6 +42,7 @@ class UserSerializer(serializers.ModelSerializer):
'photo',
'balance',
'show_in_mainpage',
+ 'trial_lesson',
)
read_only_fields = (
diff --git a/api/v1/views.py b/api/v1/views.py
index 2089f123..63dc2ea1 100644
--- a/api/v1/views.py
+++ b/api/v1/views.py
@@ -131,6 +131,8 @@ class MaterialViewSet(ExtendedModelViewSet):
class LikeViewSet(ExtendedModelViewSet):
+ OBJ_TYPE_CONTEST_WORK = 'contest_work'
+
queryset = Like.objects.select_related('user').all()
serializer_class = LikeCreateSerializer
serializer_class_map = {
@@ -143,6 +145,28 @@ class LikeViewSet(ExtendedModelViewSet):
# FIXME
authentication_classes = []
+ def create(self, request, *args, **kwargs):
+ serializer = self.get_serializer(data=request.data)
+ serializer.is_valid(raise_exception=True)
+ obj_type = request.data.get('obj_type')
+ obj_id = request.data.get('obj_id')
+ user = serializer.validated_data.get('user')
+ if not user.is_active: # FIXME and user.is_authenticated):
+ return Response(status=status.HTTP_403_FORBIDDEN)
+ if obj_type == self.OBJ_TYPE_CONTEST_WORK:
+ contest_work = ContestWork.objects.get(pk=obj_id)
+ if contest_work.user == user:
+ return Response({'error': u'Нельзя голосовать за свою работу'}, status=status.HTTP_400_BAD_REQUEST)
+ if contest_work.likes.filter(user=user).exists():
+ return Response({'error': u'Вы уже голосовали за эту работу'}, status=status.HTTP_400_BAD_REQUEST)
+ if contest_work.contest.finished:
+ return Response({'error': u'Голосование закончено'}, status=status.HTTP_400_BAD_REQUEST)
+ instance = serializer.save()
+ if obj_type == self.OBJ_TYPE_CONTEST_WORK:
+ contest_work.likes.add(instance)
+ headers = self.get_success_headers(serializer.data)
+ return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)
+
class CategoryViewSet(ExtendedModelViewSet):
queryset = Category.objects.order_by('-id')
diff --git a/apps/content/models.py b/apps/content/models.py
index 197e1e7d..0c445958 100644
--- a/apps/content/models.py
+++ b/apps/content/models.py
@@ -1,7 +1,10 @@
+from datetime import datetime, time
from urllib.parse import urlparse
+from django.conf import settings
from django.db import models
from django.contrib.auth import get_user_model
from django.urls import reverse_lazy
+from django.utils import timezone
from imagekit.models import ImageSpecField
from imagekit.processors import ResizeToCover
@@ -167,6 +170,11 @@ class Contest(models.Model):
active = models.BooleanField(default=True)
# TODO? baner
+ @property
+ def finished(self):
+ # FIXME
+ return datetime(2018, 8, 29, 21) < timezone.now()
+
def save(self, *args, **kwargs):
if self.active:
Contest.objects.filter(active=True).update(active=False)
diff --git a/apps/content/templates/content/blocks/video.html b/apps/content/templates/content/blocks/video.html
index fe741465..d9d9c47f 100644
--- a/apps/content/templates/content/blocks/video.html
+++ b/apps/content/templates/content/blocks/video.html
@@ -1,43 +1,43 @@
-
-
-
- {{ content.title }}
-
-
- {% if 'youtube.com' in content.url or 'youtu.be' in content.url %}
- VIDEO
- {% elif 'vimeo.com' in content.url %}
-
- {% endif %}
-
-
-
-
-
\ No newline at end of file
+
+
+
+ {{ content.title }}
+
+
+ {% if 'youtube.com' in content.url or 'youtu.be' in content.url %}
+ VIDEO
+ {% elif 'vimeo.com' in content.url %}
+
+ {% endif %}
+
+
+
+
+
diff --git a/apps/content/templates/content/contest.html b/apps/content/templates/content/contest.html
index f37f3886..9edbe8ec 100644
--- a/apps/content/templates/content/contest.html
+++ b/apps/content/templates/content/contest.html
@@ -12,7 +12,7 @@
{{ contest.description }}
- {% if not contest_work_uploaded %}
+ {% if not contest_work_uploaded and not contest.finished %}
Загрузить свою работу
@@ -34,7 +34,7 @@
Галерея
- {% if not contest_work_uploaded %}
+ {% if not contest_work_uploaded and not contest.finished %}
Загрузить свою работу
diff --git a/apps/content/templates/content/contest_work.html b/apps/content/templates/content/contest_work.html
index 5184faae..e4ade33d 100644
--- a/apps/content/templates/content/contest_work.html
+++ b/apps/content/templates/content/contest_work.html
@@ -35,7 +35,7 @@
+ {% if user_liked %}:user-liked="true"{% endif %} likes="{{ likes_count }}">
diff --git a/apps/content/views.py b/apps/content/views.py
index ff3a4deb..4d350cca 100644
--- a/apps/content/views.py
+++ b/apps/content/views.py
@@ -14,10 +14,11 @@ from apps.course.models import ContestWorkComment
@method_decorator(login_required, name='dispatch')
class ContestEditView(TemplateView):
template_name = 'content/contest_edit.html'
+ query_pk_and_slug = True
- def get(self, request, pk=None, lesson=None):
- if pk:
- self.object = get_object_or_404(Contest, pk=pk)
+ def get(self, request, slug=None, lesson=None):
+ if slug:
+ self.object = get_object_or_404(Contest, slug=slug)
else:
self.object = Contest()
@@ -58,6 +59,7 @@ class ContestWorkView(DetailView):
context['user_liked'] = self.object.likes.filter(user=self.request.user).exists() \
if self.request.user.is_authenticated else False
+ context['likes_count'] = self.object.likes.filter(user__is_active=True).count()
return context
diff --git a/apps/course/migrations/0043_auto_20180824_2132.py b/apps/course/migrations/0043_auto_20180824_2132.py
new file mode 100644
index 00000000..9cf26b74
--- /dev/null
+++ b/apps/course/migrations/0043_auto_20180824_2132.py
@@ -0,0 +1,29 @@
+# Generated by Django 2.0.6 on 2018-08-24 21:32
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('course', '0042_like_ip'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='course',
+ name='cover',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='course_covers', to='content.ImageObject', verbose_name='Обложка курса'),
+ ),
+ migrations.AlterField(
+ model_name='lesson',
+ name='cover',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='lesson_covers', to='content.ImageObject', verbose_name='Обложка урока'),
+ ),
+ migrations.AlterField(
+ model_name='material',
+ name='cover',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='material_covers', to='content.ImageObject', verbose_name='Обложка материала'),
+ ),
+ ]
diff --git a/apps/course/models.py b/apps/course/models.py
index dac438db..843e768e 100644
--- a/apps/course/models.py
+++ b/apps/course/models.py
@@ -65,7 +65,7 @@ class Course(BaseModel, DeactivatedMixin):
)
cover = models.ForeignKey(
ImageObject, related_name='course_covers',
- verbose_name='Обложка курса', on_delete=models.CASCADE,
+ verbose_name='Обложка курса', on_delete=models.SET_NULL,
null=True, blank=True,
)
price = models.DecimalField(
@@ -190,7 +190,7 @@ class Lesson(BaseModel, DeactivatedMixin):
)
cover = models.ForeignKey(
ImageObject, related_name='lesson_covers',
- verbose_name='Обложка урока', on_delete=models.CASCADE,
+ verbose_name='Обложка урока', on_delete=models.SET_NULL,
null=True, blank=True,
)
created_at = models.DateTimeField(auto_now_add=True)
@@ -222,7 +222,7 @@ class Material(models.Model):
title = models.CharField('Название материала', max_length=100)
cover = models.ForeignKey(
ImageObject, related_name='material_covers',
- verbose_name='Обложка материала', on_delete=models.CASCADE,
+ verbose_name='Обложка материала', on_delete=models.SET_NULL,
null=True, blank=True,
)
short_description = models.TextField('Краткое описание материала')
diff --git a/apps/school/migrations/0019_schoolschedule_cover.py b/apps/school/migrations/0019_schoolschedule_cover.py
new file mode 100644
index 00000000..88a3d222
--- /dev/null
+++ b/apps/school/migrations/0019_schoolschedule_cover.py
@@ -0,0 +1,20 @@
+# Generated by Django 2.0.6 on 2018-08-24 19:56
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('content', '0022_auto_20180815_2129'),
+ ('school', '0018_auto_20180629_1501'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='schoolschedule',
+ name='cover',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='schoolschedule_cover', to='content.ImageObject', verbose_name='Обложка дня'),
+ ),
+ ]
diff --git a/apps/school/migrations/0020_auto_20180824_2132.py b/apps/school/migrations/0020_auto_20180824_2132.py
new file mode 100644
index 00000000..42188851
--- /dev/null
+++ b/apps/school/migrations/0020_auto_20180824_2132.py
@@ -0,0 +1,29 @@
+# Generated by Django 2.0.6 on 2018-08-24 21:32
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('school', '0019_schoolschedule_cover'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='livelesson',
+ name='cover',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='livelesson_covers', to='content.ImageObject', verbose_name='Обложка урока школы'),
+ ),
+ migrations.AlterField(
+ model_name='schoolschedule',
+ name='cover',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='schoolschedule_cover', to='content.ImageObject', verbose_name='Обложка дня'),
+ ),
+ migrations.AlterField(
+ model_name='schoolscheduleimage',
+ name='img',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='schoolschedule_images', to='content.ImageObject', verbose_name='Объект изображения'),
+ ),
+ ]
diff --git a/apps/school/migrations/0021_schoolschedule_trial_lesson.py b/apps/school/migrations/0021_schoolschedule_trial_lesson.py
new file mode 100644
index 00000000..293101a3
--- /dev/null
+++ b/apps/school/migrations/0021_schoolschedule_trial_lesson.py
@@ -0,0 +1,18 @@
+# Generated by Django 2.0.6 on 2018-08-27 21:58
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('school', '0020_auto_20180824_2132'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='schoolschedule',
+ name='trial_lesson',
+ field=models.URLField(blank=True, default=''),
+ ),
+ ]
diff --git a/apps/school/models.py b/apps/school/models.py
index fe66564b..a059172f 100644
--- a/apps/school/models.py
+++ b/apps/school/models.py
@@ -38,6 +38,15 @@ class SchoolSchedule(models.Model):
'Скидка, в валюте', max_digits=8, decimal_places=2, default=0
)
start_at = models.TimeField('Начало урока', null=True)
+ cover = models.ForeignKey(
+ ImageObject,
+ related_name='schoolschedule_cover',
+ verbose_name='Обложка дня',
+ on_delete=models.SET_NULL,
+ null=True,
+ blank=True,
+ )
+ trial_lesson = models.URLField(default='', blank=True)
class Meta:
ordering = ('weekday',)
@@ -88,7 +97,7 @@ class SchoolScheduleImage(models.Model):
ImageObject,
related_name='schoolschedule_images',
verbose_name='Объект изображения',
- on_delete=models.CASCADE,
+ on_delete=models.SET_NULL,
null=True,
blank=True,
)
@@ -111,7 +120,7 @@ class LiveLesson(BaseModel, DeactivatedMixin):
ImageObject,
related_name='livelesson_covers',
verbose_name='Обложка урока школы',
- on_delete=models.CASCADE,
+ on_delete=models.SET_NULL,
null=True,
blank=True,
)
diff --git a/apps/school/templates/blocks/day_pay_btn.html b/apps/school/templates/blocks/day_pay_btn.html
index 155b8827..f4cd2f40 100644
--- a/apps/school/templates/blocks/day_pay_btn.html
+++ b/apps/school/templates/blocks/day_pay_btn.html
@@ -1,7 +1,5 @@
купить
diff --git a/apps/school/templates/blocks/schedule_item.html b/apps/school/templates/blocks/schedule_item.html
index 7860e437..e4774339 100644
--- a/apps/school/templates/blocks/schedule_item.html
+++ b/apps/school/templates/blocks/schedule_item.html
@@ -1,21 +1,24 @@
{% load static %} {% load thumbnail %}
-
+
{{ school_schedule }}
- {% if purchased and live_lesson %}
+ {% if is_purchased and live_lesson %}
{{ live_lesson.date }}
{% endif %}
{{ school_schedule.start_at }} (МСК)
- {% if purchased %}
- {% if school_schedule.weekday in school_schedules_purchased %}
- {% if live_lesson and live_lesson.title %}
- {% include './open_lesson.html' %}
- {% endif %}
+ {% if is_purchased %}
+ {% if school_schedule.weekday in school_schedules_purchased and live_lesson and live_lesson.title %}
+ {% include './open_lesson.html' %}
{% endif %}
+ {% else %}
+ {% include './day_pay_btn.html' %}
+ {% endif %}
+ {% if school_schedule.trial_lesson %}
+
Пробный урок
{% endif %}
@@ -32,7 +35,9 @@
{% thumbnail live_lesson.cover.image "70x70" crop="center" as im %}
{% empty %}
-
+
{% endthumbnail %}
diff --git a/apps/school/templates/summer/promo.html b/apps/school/templates/summer/promo.html
index 6995c7b9..7878c9ef 100644
--- a/apps/school/templates/summer/promo.html
+++ b/apps/school/templates/summer/promo.html
@@ -5,16 +5,12 @@
Lil School — первая образовательная онлайн-платформа креативного мышления для детей
- Присоединяйтесь к школе с 1 сентября
+ Старт школы - 1 сентября
- 12 уроков
+ 7 дисциплин
В разных техниках
diff --git a/apps/user/forms.py b/apps/user/forms.py
index 2445d522..d20ee0ea 100644
--- a/apps/user/forms.py
+++ b/apps/user/forms.py
@@ -18,6 +18,7 @@ class UserEditForm(forms.ModelForm):
# gender = forms.ChoiceField(choices=User.GENDER_CHOICES, required=False)
gender = forms.CharField(required=False)
# about = forms.CharField()
+ trial_lesson = forms.URLField(required=False)
old_password = forms.CharField(required=False)
new_password1 = forms.CharField(required=False)
new_password2 = forms.CharField(required=False)
@@ -41,6 +42,7 @@ class UserEditForm(forms.ModelForm):
'birthday',
'gender',
'about',
+ 'trial_lesson',
'old_password',
'new_password1',
'new_password2',
diff --git a/apps/user/migrations/0023_user_trial_lesson.py b/apps/user/migrations/0023_user_trial_lesson.py
new file mode 100644
index 00000000..33a0aab5
--- /dev/null
+++ b/apps/user/migrations/0023_user_trial_lesson.py
@@ -0,0 +1,18 @@
+# Generated by Django 2.0.6 on 2018-08-22 12:11
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('user', '0022_user_instagram_hashtag'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='user',
+ name='trial_lesson',
+ field=models.URLField(blank=True, default='', null=True),
+ ),
+ ]
diff --git a/apps/user/models.py b/apps/user/models.py
index 230d99d1..1c070240 100644
--- a/apps/user/models.py
+++ b/apps/user/models.py
@@ -74,6 +74,7 @@ class User(AbstractUser):
)
photo = models.ImageField('Фото', null=True, blank=True, upload_to='users')
show_in_mainpage = models.BooleanField('Показывать на главной странице', default=False)
+ trial_lesson = models.URLField(default='', null=True, blank=True)
objects = UserManager()
diff --git a/apps/user/templates/user/profile-settings.html b/apps/user/templates/user/profile-settings.html
index 5502c21d..90470b96 100644
--- a/apps/user/templates/user/profile-settings.html
+++ b/apps/user/templates/user/profile-settings.html
@@ -150,7 +150,18 @@
{% for error in form.about.errors %}
{{ error }}
{% endfor %}
-
+
+ {% if is_teacher %}
+
+ {% endif %}
- 12 уроков
+ 7 дисциплин
В разных техниках
@@ -43,20 +43,6 @@
Хранится 7 дней
-
+
diff --git a/project/templates/blocks/comment.html b/project/templates/blocks/comment.html
index be3234e9..d9e4822a 100644
--- a/project/templates/blocks/comment.html
+++ b/project/templates/blocks/comment.html
@@ -1,5 +1,5 @@
{% load static %}
-{% if not node.deactivated_at %}
+{% if not node.deactivated_at and node.author.is_active %}
{% if node.author.photo %}
diff --git a/project/templates/blocks/lil_store_js.html b/project/templates/blocks/lil_store_js.html
index cb5eb6f8..32da4573 100644
--- a/project/templates/blocks/lil_store_js.html
+++ b/project/templates/blocks/lil_store_js.html
@@ -4,7 +4,7 @@
staticUrl: '{% static "" %}',
accessToken: '{{ request.user.auth_token }}',
user: {
- id: {{ request.user.id|default:'null' }},
+ id: '{{ request.user.id|default:'' }}',
}
};
diff --git a/project/templates/blocks/partners.html b/project/templates/blocks/partners.html
index 194daf54..ae1040c1 100644
--- a/project/templates/blocks/partners.html
+++ b/project/templates/blocks/partners.html
@@ -4,16 +4,30 @@
Наши партнеры
+
+ Скидка 15% по промокоду у наших партнеров
+
+
diff --git a/project/templates/blocks/popup_auth.html b/project/templates/blocks/popup_auth.html
index 1a527a90..3e6c5c75 100644
--- a/project/templates/blocks/popup_auth.html
+++ b/project/templates/blocks/popup_auth.html
@@ -37,10 +37,10 @@
-
+
-
+
@@ -53,7 +53,7 @@
или
-
+
ЧЕРЕЗ FACEBOOK
@@ -107,10 +107,10 @@
-
+
-
+
@@ -133,7 +133,7 @@
или
-
+
ЧЕРЕЗ FACEBOOK
diff --git a/project/templates/blocks/popup_buy.html b/project/templates/blocks/popup_buy.html
index 96b3b29d..0321b2ea 100644
--- a/project/templates/blocks/popup_buy.html
+++ b/project/templates/blocks/popup_buy.html
@@ -37,6 +37,11 @@
{% comment %} dont delete {% endcomment %}
{{ school_schedule.title }}
+
+ {% if school_schedule.trial_lesson %}
+ Пробный урок
+ {% endif %}
+
{{school_schedule.month_price}}р в мес.
@@ -58,6 +63,11 @@
{% comment %} dont delete {% endcomment %}
{{ school_schedule.title }}
+
+ {% if school_schedule.trial_lesson %}
+ Пробный урок
+ {% endif %}
+
{{school_schedule.month_price}}р в мес.
@@ -89,7 +99,7 @@
diff --git a/project/templates/blocks/popup_subscribe.html b/project/templates/blocks/popup_subscribe.html
index d78b324d..5e9921dc 100644
--- a/project/templates/blocks/popup_subscribe.html
+++ b/project/templates/blocks/popup_subscribe.html
@@ -10,20 +10,20 @@
\ No newline at end of file
+
diff --git a/project/templates/blocks/promo.html b/project/templates/blocks/promo.html
index fd000cba..f6f49349 100644
--- a/project/templates/blocks/promo.html
+++ b/project/templates/blocks/promo.html
@@ -46,27 +46,20 @@
{% else %}
- Приглашаем вас на месяц открытых дверей в Lil School
+ Приглашаем вас присоединиться к онлайн-школе с 1 сентября!
- {% comment %}
{% if not is_purchased and not is_purchased_future %}
- Получить доступ
+ купить доступ от {{ min_school_price }} руб./месяц
+ {% else %}
+
Подробнее
{% endif %}
- {% endcomment %}
-
Подробнее
{% endif %}
diff --git a/project/templates/blocks/teachers.html b/project/templates/blocks/teachers.html
index 2b251b33..492ca66d 100644
--- a/project/templates/blocks/teachers.html
+++ b/project/templates/blocks/teachers.html
@@ -17,10 +17,15 @@
@@ -30,13 +35,13 @@
- {% endif %} {% if teacher.instagram %}
+ {% endif %} {# if teacher.instagram #}
- {% endif %} {% if teacher.twitter %}
+ {# endif #} {% if teacher.twitter %}