Выгрузки

feature/fix_generate_pass
Andrey 8 years ago
parent 2dd1f0e554
commit ce9e0aede4
  1. 1
      access/init_group.py
  2. 1
      finance/models.py
  3. 35
      finance/views.py
  4. 1
      journals/urls.py
  5. 48
      journals/views.py

@ -16,4 +16,5 @@ if __name__ == '__main__':
Group.objects.get_or_create(name='curators')
Group.objects.get_or_create(name='partners')
Group.objects.get_or_create(name='supports')
Group.objects.get_or_create(name='finance')
Group.objects.get_or_create(name='project_managers')

@ -53,6 +53,7 @@ class Invoice(models.Model):
blank=True, editable=False)
bill = models.ForeignKey(to=Bill, verbose_name="Связный счёт")
is_open = models.BooleanField(default=True, verbose_name="Открывает ли платёж курс")
date = models.DateTimeField(auto_now_add=True)
def __str__(self):
return '%s:%s %s' % (self.id, self.get_status_display(), self.bill.user)

@ -7,6 +7,8 @@ from rest_framework.renderers import JSONRenderer
from rest_framework.response import Response
from django.db.models import Q
from django.shortcuts import redirect
import csv
from django.http import HttpResponse, HttpResponseForbidden
from yandex_money.models import Payment
from finance.models import Bill, Invoice
@ -118,3 +120,36 @@ class YandexPay(APIView):
return Response('Payment not found', status=404)
def get_pay_stat(request, pk):
if not request.user.is_authenticated and (request.user.groups.filter(name="finance") or request.user.is_superuser):
return HttpResponseForbidden()
date_from = request.GET.get('from', None)
date_to = request.GET.get('to', None)
file_name = "teacher_%s" % pk
file_name = file_name + "__from_%s" % date_from if date_from else file_name
file_name = file_name + "__to_%s" % date_to if date_to else file_name
invoices = Invoice.objects.filter()
invoices = invoices.filter(date__lt=date_to) if date_to else invoices
invoices = invoices.filter(date__gte=date_from) if date_from else invoices
response = HttpResponse(content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename="%s"' % file_name
writer = csv.writer(response)
writer.writerow(['student_email', 'full_name', 'course', 'theme', 'task_id', 'date'])
for i in invoices.order_by('-date'):
student = get_user_model().objects.get(id=i.thread.key.split('user_')[1].split('__vertex')[0])
writer.writerow([
student.email,
student.get_full_name(),
i.content_object.course.title,
i.content_object.vertex_set.all()[0].title,
i.content_object.id,
i.date.date()
])
return response

@ -3,5 +3,6 @@ from journals import views as views
urlpatterns = [
url(r'thread/$', views.ThreadAdminListView.as_view()),
url(r'pay-stat/([0-9]{1,99})/$', views.get_pay_stat),
url(r'thread/(?P<key>[-\w]+)/$', views.ThreadDetailView.as_view()),
]

@ -1,10 +1,11 @@
from django.contrib.auth import get_user_model
from rest_framework.views import APIView
from rest_framework.renderers import JSONRenderer
from rest_framework.response import Response
from django.db.models import Q
from lms.global_decorators import transaction_decorator
import csv
from django.http import HttpResponse, HttpResponseForbidden
from journals.models import Thread
from journals.models import Thread, Journal
from journals.serilizers import ThreadDetailSerializer, ThreadAdminSerializer
@ -31,9 +32,9 @@ class ThreadDetailView(APIView):
thread.x = request.JSON.get('x', thread.x)
thread.y = request.JSON.get('y', thread.y)
thread.save()
return Response(ThreadAdminSerializer(thread).data, self.status_code,)
return Response(ThreadAdminSerializer(thread).data, self.status_code, )
except Thread.DoesNotExist:
return Response("Thread doesn't exist.", self.status_code,)
return Response("Thread doesn't exist.", self.status_code, )
@staticmethod
def get(request, key):
@ -44,4 +45,39 @@ class ThreadDetailView(APIView):
return Response("permission denied", status=403)
except Thread.DoesNotExist:
return Response("Thread not found", status=404)
return Response("Thread not found", status=404)
def get_pay_stat(request, pk):
if not request.user.is_authenticated and (request.user.groups.filter(name="supports") or request.user.is_superuser):
return HttpResponseForbidden()
date_from = request.GET.get('from', None)
date_to = request.GET.get('to', None)
file_name = "teacher_%s" % pk
file_name = file_name + "__from_%s" % date_from if date_from else file_name
file_name = file_name + "__to_%s" % date_to if date_to else file_name
journals = Journal.objects.filter(user_id=pk, action_type="yes")
journals = journals.filter(date__lt=date_to) if date_to else journals
journals = journals.filter(date__gte=date_from) if date_from else journals
response = HttpResponse(content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename="%s"' % file_name
writer = csv.writer(response)
writer.writerow(['student_email', 'full_name', 'course', 'theme', 'task_id', 'date'])
for i in journals.order_by('-date'):
student = get_user_model().objects.get(id=i.thread.key.split('user_')[1].split('__vertex')[0])
writer.writerow([
student.email,
student.get_full_name(),
i.content_object.course.title,
i.content_object.vertex_set.all()[0].title,
i.content_object.id,
i.date.date()
])
return response

Loading…
Cancel
Save