Merge branch 'feature/course_access_duration_7-02-19' into 'master'

Feature/course access duration 7 02 19

See merge request lilschool/site!263
remotes/origin/hotfix/users_in_admin_bonuses_9-02-19
Danil 7 years ago
commit cf9bca4e8d
  1. 13
      apps/course/templates/course/_items.html
  2. 17
      apps/course/views.py

@ -50,11 +50,16 @@
<a class="courses__theme theme {{ theme_color }}" <a class="courses__theme theme {{ theme_color }}"
href="{% url 'courses' %}?category={{ course.category.id }}">{{ course.category | upper }}</a> href="{% url 'courses' %}?category={{ course.category.id }}">{{ course.category | upper }}</a>
{% if not course.is_free %} {% if not course.is_free %}
{% if course.old_price %} {% if course.buy_again_price %}
<div class="courses__old-price"><s>{{ course.old_price|floatformat:"-2" }}₽</s></div> <div class="courses__old-price"><s>{{ course.price|floatformat:"-2" }}₽</s></div>
<div class="courses__price" style="color: red;">{{ course.buy_again_price|floatformat:"-2" }}₽</div>
{% else %}
{% if course.old_price %}
<div class="courses__old-price"><s>{{ course.old_price|floatformat:"-2" }}₽</s></div>
{% endif %}
<div class="courses__price"
{% if course.old_price %}style="color: red;"{% endif %}>{{ course.price|floatformat:"-2" }}₽</div>
{% endif %} {% endif %}
<div class="courses__price"
{% if course.old_price %}style="color: red;"{% endif %}>{{ course.price|floatformat:"-2" }}₽</div>
{% endif %} {% endif %}
</div> </div>
<a class="courses__title" href="{{ course.url }}">{{ course.title }}</a> <a class="courses__title" href="{{ course.url }}">{{ course.title }}</a>

@ -1,5 +1,6 @@
from paymentwall import Pingback from datetime import timedelta
from paymentwall import Pingback
from django.contrib.auth import get_user_model from django.contrib.auth import get_user_model
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
from django.db.models import Q from django.db.models import Q
@ -14,7 +15,7 @@ from django.views.decorators.http import require_http_methods
from django.utils.translation import gettext as _ from django.utils.translation import gettext as _
from django.utils.timezone import now from django.utils.timezone import now
from apps.payment.models import AuthorBalance from apps.payment.models import AuthorBalance, CoursePayment
from .models import Course, Like, Lesson, CourseComment, LessonComment from .models import Course, Like, Lesson, CourseComment, LessonComment
from .filters import CourseFilter from .filters import CourseFilter
@ -244,9 +245,8 @@ class CourseView(DetailView):
context['payment'] = payment context['payment'] = payment
context['access_duration'] = ((payment.access_expire - now().date()).days + 1) if payment else self.object.access_duration context['access_duration'] = ((payment.access_expire - now().date()).days + 1) if payment else self.object.access_duration
context['paid'] = bool(payment) context['paid'] = bool(payment)
context['can_buy_again'] = bool(self.object.price) and (context['access_duration'] < 7 if payment else context['can_buy_again'] = bool(self.object.price) and (context['access_duration'] <= 7 if payment else
payments.filter(access_expire__lt=now().date()).exists()) payments.filter(access_expire__lt=now().date()).exists())
context['course_price'] = self.object.price / 2 if context['can_buy_again'] else self.object.price
context['pending'] = self.object.payments.filter( context['pending'] = self.object.payments.filter(
user=self.request.user, user=self.request.user,
status=Pingback.PINGBACK_TYPE_RISK_UNDER_REVIEW, status=Pingback.PINGBACK_TYPE_RISK_UNDER_REVIEW,
@ -257,6 +257,8 @@ class CourseView(DetailView):
context['is_owner'] = self.object.author == self.request.user context['is_owner'] = self.object.author == self.request.user
context['is_admin'] = self.request.user.role == User.ADMIN_ROLE context['is_admin'] = self.request.user.role == User.ADMIN_ROLE
context['has_full_access'] = context['is_owner'] or context['is_admin'] context['has_full_access'] = context['is_owner'] or context['is_admin']
context['course_price'] = self.object.price / 2 if context.get('can_buy_again') else self.object.price
return context return context
def get_queryset(self): def get_queryset(self):
@ -325,6 +327,13 @@ class CoursesView(ListView):
context['age_name'] = dict(Course.AGE_CHOICES).get(age, '') context['age_name'] = dict(Course.AGE_CHOICES).get(age, '')
else: else:
context['age_name'] = '' context['age_name'] = ''
if self.request.user.is_authenticated:
can_buy_again_courses = list(CoursePayment.objects.filter(user=self.request.user,
status__in=CoursePayment.PW_PAID_STATUSES,
access_expire__lte=now().date() + timedelta(7)).values_list('course_id', flat=True))
for course in context['course_items']:
if course.id in can_buy_again_courses:
course.buy_again_price = course.price / 2
return context return context
def get_template_names(self): def get_template_names(self):

Loading…
Cancel
Save