From 3c1242cbb847e7170b84254f1245b86244434101 Mon Sep 17 00:00:00 2001 From: Ivlev Denis Date: Wed, 7 Mar 2018 11:41:23 +0300 Subject: [PATCH] Update school data in user profile --- apps/course/templates/course/school.html | 68 ++++++++++++++---------- apps/payment/views.py | 20 ++++++- apps/user/views.py | 31 ++++++++++- 3 files changed, 86 insertions(+), 33 deletions(-) diff --git a/apps/course/templates/course/school.html b/apps/course/templates/course/school.html index e0eaecf7..ebca264c 100644 --- a/apps/course/templates/course/school.html +++ b/apps/course/templates/course/school.html @@ -1,34 +1,44 @@ +{% load static %} +{% load rupluralize from plural %} +{% if school_payment %}
-
-
-
-
Январь
-
Осталось 14 дней
-
- -
-
+
+
+
+
+ Дата окончания: +

{{ school_payment.date_end }}

- -
- ПОСМОТРЕТЬ ПРЕДЫДУЩИЕ УРОКИ +
Осталось: {{ school_days_left | rupluralize:"день,дня,дней" }}
+
+
+
-
- {% for course in course_items %} -
-
Понедельник
-
Пластилиновая живопись.
-
-

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

-
-
- {% endfor %} + + +
+
+ {% for school_schedule in school_schedules %} +
+
{{ school_schedule }}
+
{{ school_schedule.title }}
+
+

{{ school_schedule.description }}

+
-
\ No newline at end of file + {% endfor %} +
+
+{% endif %} diff --git a/apps/payment/views.py b/apps/payment/views.py index fbc6cba2..66b3fe03 100644 --- a/apps/payment/views.py +++ b/apps/payment/views.py @@ -129,8 +129,24 @@ class PaymentwallCallbackView(View): payment.status = pingback.get_type() payment.data = payment_raw_data if pingback.is_deliverable() and product_type_name == 'school': - payment.date_start = now() - payment.date_end = now() + timedelta(days=30) + school_payment = SchoolPayment.objects.filter( + user=self.object, + date_start__lte=now(), + date_end__gt=now(), + status__in=[ + Pingback.PINGBACK_TYPE_REGULAR, + Pingback.PINGBACK_TYPE_GOODWILL, + Pingback.PINGBACK_TYPE_RISK_REVIEWED_ACCEPTED, + ], + ).last() + if school_payment: + date_start = school_payment.date_end + timedelta(days=1) + date_end = date_start + timedelta(days=30) + else: + date_start = now() + date_end = now() + timedelta(days=30) + payment.date_start = date_start + payment.date_end = date_end payment.save() author_balance = getattr(payment, 'author_balance', None) diff --git a/apps/user/views.py b/apps/user/views.py index 6d959069..533d19ad 100644 --- a/apps/user/views.py +++ b/apps/user/views.py @@ -1,7 +1,10 @@ +import arrow + from io import BytesIO from PIL import Image from os.path import splitext from datetime import timedelta +from paymentwall import Pingback from django.contrib.auth import login from django.core.exceptions import ValidationError @@ -18,8 +21,9 @@ from django.utils.timezone import now from apps.auth.tokens import verification_email_token from apps.course.models import Course -from apps.payment.models import AuthorBalance, CoursePayment from apps.notification.utils import send_email +from apps.school.models import SchoolSchedule +from apps.payment.models import AuthorBalance, CoursePayment, SchoolPayment from .forms import UserEditForm, WithdrawalForm @@ -52,8 +56,31 @@ class UserView(DetailView): author=self.object, status=Course.DRAFT ) context['paid'] = Course.objects.filter( - payments__in=CoursePayment.objects.filter(user=self.object), + payments__in=CoursePayment.objects.filter( + user=self.object, + status__in=[ + Pingback.PINGBACK_TYPE_REGULAR, + Pingback.PINGBACK_TYPE_GOODWILL, + Pingback.PINGBACK_TYPE_RISK_REVIEWED_ACCEPTED, + ], + ), ).distinct() + school_payment = SchoolPayment.objects.filter( + user=self.object, + date_start__lte=now(), + date_end__gt=now(), + status__in=[ + Pingback.PINGBACK_TYPE_REGULAR, + Pingback.PINGBACK_TYPE_GOODWILL, + Pingback.PINGBACK_TYPE_RISK_REVIEWED_ACCEPTED, + ], + ).last() + context['school_payment'] = school_payment + if school_payment and school_payment.date_end: + context['school_days_left'] = (school_payment.date_end - now().date()).days + context['school_schedules'] = SchoolSchedule.objects.filter( + weekday__in=school_payment.weekdays if school_payment else [], + ) return context