Merge branch 'dev' into 'master'

Dev

See merge request !434
remotes/origin/autodeploy
Andrey 8 years ago
commit dc1d17179a
  1. 34
      finance/views.py
  2. 52
      progress/views.py

@ -186,16 +186,12 @@ class InvoiceDetailView(APIView):
)
if invoice.status == "F":
invoice.real_price = invoice.real_price if real_price is None else real_price
return Response(InvoiceSerializer(invoice).data, status=200)
invoice.real_price = None
invoice.method = method
invoice.status = status
if invoice.status == "F":
# TODO это никогда не выполнится
invoice.real_price = invoice.real_price if real_price is None else real_price
if bill.check_pay() and (invoice.price < price):
return Response("""Нельзя менять стоимость по счёту в большую сторону,
когда один из платежей оплачен""", status=400)
@ -207,19 +203,21 @@ class InvoiceDetailView(APIView):
if pay_count > 1:
invoice.create_child_pays(pay_count)
if invoice.method == 'Y' and invoice.yandex_pay is None:
yandex_pay = Payment(
order_amount=invoice.price,
shop_amount=0,
customer_number=bill.user.id,
user=bill.user,
cps_email=bill.user.email,
)
if pay_count > 1:
yandex_pay.shop_id = settings.YANDEX_MONEY_REBILLING_SHOP_ID
yandex_pay.scid = settings.YANDEX_MONEY_REBILLING_SCID
yandex_pay.save()
invoice.yandex_pay = yandex_pay
if invoice.method == 'Y' and invoice.status == 'P':
if invoice.yandex_pay is None:
yandex_pay = Payment(
order_amount=invoice.price,
shop_amount=0,
customer_number=bill.user.id,
user=bill.user,
cps_email=bill.user.email,
)
if pay_count > 1:
yandex_pay.shop_id = settings.YANDEX_MONEY_REBILLING_SHOP_ID
yandex_pay.scid = settings.YANDEX_MONEY_REBILLING_SCID
yandex_pay.save()
invoice.yandex_pay = yandex_pay
invoice.send_link()
context = {

@ -15,14 +15,16 @@ from rest_framework.permissions import IsAuthenticated
from rest_framework.renderers import JSONRenderer
from rest_framework.response import Response
from rest_framework.views import APIView
from django.db.models import Q, Count
from django.db.models import Q, Count, F
import jwt
from django.conf import settings
from django.db.models.functions import Cast
from django.db.models.fields import DateField
from access.serializers import UserProgressSearchSerializer
from courses.models import Course, Lesson
from progress.models import ProgressLesson, Progress
from progress.serializers import ProgressAnalyticSerializer, ProgressLessonSerializer, ProgressSerializer, \
from progress.serializers import ProgressAnalyticSerializer, ProgressLessonSerializer, \
SecureProgressSerializer
from courses.api import CourseProgressApi, CourseParamsApi
from progress.tasks import add_next_lesson
@ -65,27 +67,45 @@ class CourseProgressDynamicView(APIView):
@staticmethod
def get(request):
course_token = request.GET.get('course_token', None)
course_token = request.GET.get('course_token', '')
teacher_email = request.GET.get('teacher_email', '').lower()
from_date = int(request.GET.get('from', '7'))
to_date = int(request.GET.get('to', '0'))
only_hw = request.GET.get('only_hw', 'yes') == 'yes'
if request.user.is_authenticated() and request.user.is_staff:
progresses = ProgressLesson.objects.filter(status='done')
if not course_token is None:
try:
progresses = progresses.filter(progress__course_token=course_token)
except ProgressLesson.DoesNotExist:
return Response('incorrect course token', status=404)
progresses = ProgressLesson.objects.all()
if only_hw:
progresses = progresses.filter(checker=F('progress__teacher'))
progresses = progresses.filter(finish_date__gt=timezone.now() - relativedelta(days=from_date))
progresses = progresses.filter(finish_date__lt=timezone.now() - relativedelta(days=to_date))
progresses = progresses.order_by('finish_date')
if not course_token is '':
progresses = progresses.filter(progress__course_token=course_token)
if not teacher_email is '':
progresses = progresses.filter(checker__email=teacher_email)
res = {}
progresses = progresses.extra({'finish_date_day': "date(finish_date)"})\
.values('progress__course_token', 'finish_date_day')\
.annotate(total=Count('progress'))
#TODO Доделать
progresses_finish = progresses.filter(finish_date__gt=timezone.now() - relativedelta(days=from_date))
progresses_finish = progresses_finish.filter(finish_date__lt=timezone.now() - relativedelta(days=to_date))
progresses_start = progresses.filter(start_date__gt=timezone.now() - relativedelta(days=from_date))
progresses_start = progresses_start.filter(start_date__lt=timezone.now() - relativedelta(days=to_date))
progresses_finish = progresses_finish.annotate(name=Cast('finish_date', DateField())) \
.values('name') \
.annotate(value=Count('id'))
progresses_start = progresses_start.annotate(name=Cast('start_date', DateField())) \
.values('name') \
.annotate(value=Count('id'))
progresses_finish = progresses_finish.order_by('name')
progresses_start = progresses_start.order_by('name')
res['finish'] = progresses_finish
res['start'] = progresses_start
return Response(res, status=200)
return Response('Доступно только персоналу', status=403)

Loading…
Cancel
Save