Merge branch 'dev' into 'master'

Dev

See merge request lilcity/backend!13
remotes/origin/hasaccess
cfwme 8 years ago
commit 076bc32cbb
  1. 4
      api/v1/serializers/user.py
  2. 6
      api/v1/views.py
  3. 2
      apps/auth/templates/auth/password_reset_subject.txt
  4. 2
      apps/auth/views.py
  5. 4
      apps/course/templates/course/course.html
  6. 5
      apps/course/templates/course/inclusion/category_menu_items.html
  7. 1
      apps/school/templates/school/livelesson_detail.html
  8. 2
      apps/user/models.py
  9. 2
      apps/user/views.py
  10. 1
      project/settings.py
  11. 2
      project/templates/blocks/footer.html
  12. 4
      project/templates/blocks/header.html
  13. 9
      project/templates/blocks/share.html
  14. 4
      project/templates/blocks/user_menu.html
  15. 13
      templates/404.html
  16. BIN
      web/src/img/artkvartal.png
  17. BIN
      web/src/img/mif.jpg
  18. 16
      web/src/sass/_common.sass

@ -45,6 +45,7 @@ class UserSerializer(serializers.ModelSerializer):
read_only_fields = (
'id',
'username',
'photo',
'date_joined',
'is_staff',
@ -54,6 +55,9 @@ class UserSerializer(serializers.ModelSerializer):
)
def create(self, validated_data):
username = validated_data.get('username', None)
if not username:
validated_data['username'] = validated_data['email']
instance = super().create(validated_data)
if not instance.password:
password = User.objects.make_random_password()

@ -419,13 +419,13 @@ class AuthorRequestViewSet(ExtendedModelViewSet):
class PaymentViewSet(ExtendedModelViewSet):
queryset = Payment.objects.all()
queryset = Payment.objects.order_by('-created_at')
serializer_class = PaymentSerializer
permission_classes = (IsAdmin,)
filter_fields = ('status',)
ordering_fields = (
'id', 'user__email',
'user__firstname', 'user__lastname',
'user__first_name', 'user__last_name',
'amount', 'created_at',
)
search_fields = ('user__email', 'user__firstname', 'user__lastname',)
search_fields = ('user__email', 'user__first_name', 'user__last_name',)

@ -1 +1 @@
Password reset
Восстановление пароля

@ -56,7 +56,7 @@ class LearnerRegistrationView(FormView):
refferer = str(refferer[0]) + '://' + str(refferer[1])
token = verification_email_token.make_token(user)
url = refferer + str(reverse_lazy('lilcity:verification-email', args=[token]))
send_email('Verification Email', email, "notification/email/verification_email.html", url=url, config=config)
send_email('Вы успешно прошли регистрацию', email, "notification/email/verification_email.html", url=url, config=config)
return JsonResponse({"success": True}, status=201)

@ -8,8 +8,8 @@
{% block twurl %}{{ request.build_absolute_uri }}{% endblock twurl %}
{% block ogtitle %}{{ course.title }} - {{ block.super }}{% endblock ogtitle %}
{% block ogurl %}{{ request.build_absolute_uri }}{% endblock ogurl %}
{% if course.cover %}
{% block ogimage %}{{ request.build_absolute_uri }}{{ course.cover.url }}{% endblock ogimage %}
{% if course.cover and course.cover.image %}
{% block ogimage %}http://{{request.META.HTTP_HOST}}{{ course.cover.image.url }}{% endblock ogimage %}
{% endif %}
{% block ogdescription %}{{ course.short_description }}{% endblock ogdescription %}

@ -1,5 +1,8 @@
{% for cat in category_items %}
<a class="header__link" href="{% url 'courses' %}">
<div class="header__title">Все курсы</div>
</a>
<a class="header__link{% if category.0 == cat.title %} active{% endif %}" data-category-name="{{ cat.title }}" href="{% url 'courses' %}?category={{ cat.title }}">
<div class="header__title">{{ cat.title }}</div>
</a>
{% endfor %}
{% endfor %}

@ -13,6 +13,7 @@
<iframe class="lesson__video_frame" src="https://player.vimeo.com/video/{{ livelesson.stream_index }}" frameborder="0" webkitallowfullscreen
mozallowfullscreen allowfullscreen>
</iframe>
<a href="#" class="center center_sm" onclick="location.reload();">Если видео не загрузилось обновите страницу</a>
<iframe class="lesson__chat_frame" src="https://vimeo.com/live-chat/{{ livelesson.stream_index }}" frameborder="0"></iframe>
{% else %}
{% if livelesson.cover %}

@ -21,7 +21,7 @@ class UserManager(BaseUserManager):
def _create_user(self, username, email, password, **extra_fields):
if not username:
raise ValueError('The given username must be set')
username = email
if not password:
password = self.make_random_password()
super().save(*args, **kwargs)

@ -37,7 +37,7 @@ User = get_user_model()
def resend_email_verify(request):
token = verification_email_token.make_token(request.user)
url = request.scheme + '://' + request.get_host() + str(reverse_lazy('lilcity:verification-email', args=[token]))
send_email('Verification Email', request.user.email, "notification/email/verification_email.html", url=url)
send_email('Вы успешно прошли регистрацию', request.user.email, "notification/email/verification_email.html", url=url)
messages.info(request, 'Письмо подтверждения отправлено.')
return redirect('user-edit-profile', request.user.id)

@ -84,6 +84,7 @@ TEMPLATES = [
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
'project',
'templates',
],
'OPTIONS': {
'context_processors': [

@ -11,7 +11,7 @@
<nav class="footer__nav">
<a class="footer__link" href="/#about">О нас</a>
<a class="footer__link" href="/#teachers">Преподаватели</a>
<a class="footer__link" target="_blank" href="http://blog.lil.school">Блог</a>
<a class="footer__link" href="https://blog.lil.school">Блог</a>
<a class="footer__link" href="/#game">Наши приложения</a>
<a class="footer__link" target="_blank" href="https://drive.google.com/drive/folders/1g14ExvB9X_8ZsES6XkNzkTY3QrZm2WgT?usp=sharing">Медиа-кит</a>
</nav>

@ -27,7 +27,7 @@
<nav class="header__nav">
<div class="header__group">
<a class="header__section {% active_link 'school:school' %}" href="{% url 'school:school' %}">
ОНЛАЙН-ШКОЛА {% if online %}
ОНЛАЙН-ШКОЛА {% if online or livelesson.is_online %}
<div class="header__dot"></div>
{% endif %}
</a>
@ -39,7 +39,7 @@
</div>
</div>
<div class="header__group">
<a class="header__section" target="_blank" href="http://blog.lil.school">БЛОГ</a>
<a class="header__section" href="https://blog.lil.school">БЛОГ</a>
</div>
</nav>
</div>

@ -1,23 +1,24 @@
{% load static %}
<div class="share">
<div class="share__title">Поделиться {% if livelesson or lesson %}уроком{% else %}курсом{% endif %}</div>
<div class="share__list likely">
<a class="share__item facebook" href="#">
<a class="share__item facebook" href="#" data-url="http://{{request.META.HTTP_HOST}}{{object.get_absolute_url}}">
<svg class="icon icon-share-facebook">
<use xlink:href="{% static 'img/sprite.svg' %}#icon-share-facebook"></use>
</svg>
</a>
<a class="share__item twitter" href="#">
<a class="share__item twitter" href="#" data-url="http://{{request.META.HTTP_HOST}}{{object.get_absolute_url}}">
<svg class="icon icon-share-twitter">
<use xlink:href="{% static 'img/sprite.svg' %}#icon-share-twitter"></use>
</svg>
</a>
<a class="share__item gplus" href="#">
<a class="share__item gplus" href="#" data-url="http://{{request.META.HTTP_HOST}}{{object.get_absolute_url}}">
<svg class="icon icon-share-google">
<use xlink:href="{% static 'img/sprite.svg' %}#icon-share-google"></use>
</svg>
</a>
<a class="share__item pinterest" href="#">
<a class="share__item pinterest" href="#" data-url="http://{{request.META.HTTP_HOST}}{{object.get_absolute_url}}">
<svg class="icon icon-share-pinterest">
<use xlink:href="{% static 'img/sprite.svg' %}#icon-share-pinterest"></use>
</svg>

@ -1,13 +1,13 @@
{% load static %} {% load thumbnail %}
{% if request.user.is_authenticated %}
<div class="header__login">
<div class="header__ava ava">
<a class="header__ava ava" href="{% url 'user' request.user.id %}">
{% thumbnail request.user.photo "48x48" crop="center" as im %}
<img class="ava__pic" src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}" />
{% empty %}
<img class="ava__pic" src="{% static 'img/user_default.jpg' %}" width="48px" height="48px" />
{% endthumbnail %}
</div>
</a>
<div class="header__drop">
{% if request.user.role >= request.user.AUTHOR_ROLE %}
<a class="header__link header__link_border" href="{% url 'user-edit-payments' request.user.id %}">

@ -0,0 +1,13 @@
{% extends "templates/lilcity/index.html" %} {% load static %} {% load static %} {% block content %}
<div class="section">
<div class="section__center center center_xs">
<div class="done">
<div class="done__title title">Адрес не найден.</p>
</div>
<div class="done__foot">
<a class="done__btn btn btn_md btn_stroke" href="/">ПЕРЕЙТИ НА ГЛАВНУЮ</a>
</div>
</div>
</div>
</div>
{% endblock content %}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

@ -36,6 +36,10 @@ $bg: #f8f8f8
$border: #E6E6E6
$cl: #191919
@keyframes blinker
50%
opacity: 0
body
min-width: 360px
+f
@ -451,6 +455,7 @@ a.btn
margin-top: -5px
background: #EE4630
border-radius: 50%
animation: blinker 2s linear infinite;
+t
width: 6px
height: 6px
@ -2659,15 +2664,11 @@ a.grey-link
margin-bottom: 30px
color: #191919
&__video_frame
width: 640px
height: 360px
+m
width: 100%
width: 100%
height: 400px
&__chat_frame
width: 600px
width: 100%
height: 600px
+m
width: 100%
.lessons
@ -3758,6 +3759,7 @@ a.grey-link
height: 8px
background: #EE4630
border-radius: 50%
animation: blinker 2s linear infinite;
&__date
opacity: .5
+m

Loading…
Cancel
Save