finance logging

remotes/origin/feture_statistic
Andrey 8 years ago
parent 1518685848
commit e723375d7c
  1. 6
      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)

@ -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', '')
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 '' or only_hw):
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