feature/fix_generate_pass
Andrey 8 years ago
parent 68bd99bf3c
commit 693895a90a
  1. 6
      access/models/other.py
  2. 1
      access/models/user.py
  3. 2
      access/views.py
  4. 2
      finance/signals.py
  5. 2
      journals/models.py
  6. 12
      journals/views.py

@ -2,6 +2,8 @@ from django.conf import settings
from django.db import models
from courses.models import Course, Vertex
from journals.models import Thread
from lms.global_decorators import transaction_decorator
from maps.models import CourseRoute
from django.db.models import Q
@ -59,13 +61,15 @@ class Progress(models.Model):
self.course.title,
)
@transaction_decorator
def add_vertex(self, vertex):
self.progress_list.add(vertex)
parent = vertex.vertex_set.first() if vertex.vertex_set.all().exists() else None
if parent:
children_ids = self.progress_list.values_list('id', flat=True)
_flt = ~Q(id__in=children_ids)
parent.children.filter(_flt)
if parent.children.filter(_flt).exists():
self.progress_list.add(parent)
def get_template(self):
return self.template if self.template else self.course.route

@ -9,6 +9,7 @@ from django.utils import timezone
from django.utils.translation import ugettext_lazy as _
from access.models.other import Invite, Account
from courses.models import Vertex
from journals.models import Thread
from lms.global_decorators import transaction_decorator

@ -254,7 +254,7 @@ class UpdateProgress(APIView):
return res_403
try:
progress = Progress.objects.get(user=request.user, course=vertex.course, active_obj=vertex)
progress = Progress.objects.get(user=request.user, course=vertex.course)
progress.add_vertex(vertex)
return Response(status=204)
except Progress.DoesNotExist:

@ -8,7 +8,7 @@ from access.models.other import Progress
@receiver(pre_save, sender=Invoice)
def delete_dependencies(instance, **kwargs):
def invoice_signal(instance, **kwargs):
"""Отправка сообщения после сохранения платежа"""
if instance.yandex_pay and instance.method == 'Y' and instance.status == 'P':
msg = EmailMessage(

@ -70,7 +70,7 @@ class Thread(models.Model):
def check_perm(self, user):
res = user in self.subscribers.all()
for i in self.groups.all():
res = res or i in user.groups.all()
res = res or (i in user.groups.all())
return res or sum([int(i.check_perm(user)) for i in self.parent.all()])
def child_thread_count(self):

@ -1,5 +1,6 @@
from django.contrib.auth import get_user_model
from django.contrib.contenttypes.models import ContentType
from rest_framework.permissions import IsAuthenticated
from rest_framework.views import APIView
from rest_framework.renderers import JSONRenderer
from rest_framework.response import Response
@ -9,6 +10,7 @@ from django.http import HttpResponse, HttpResponseForbidden
from access.models.other import Progress
from journals.models import Thread, Journal
from journals.serilizers import ThreadDetailSerializer, ThreadAdminSerializer, JournalSerializer
from lms.global_decorators import transaction_decorator
from lms.tools import decode_base64
from storage.models import Storage
@ -26,6 +28,7 @@ class ThreadAdminListView(APIView):
class ThreadDetailView(APIView):
renderer_classes = (JSONRenderer,)
permission_classes = ()
status_code = 200
def post(self, request, key):
@ -89,8 +92,10 @@ def get_pay_stat(request, pk):
class JournalCreateView(APIView):
renderer_classes = (JSONRenderer,)
permission_classes = (IsAuthenticated,)
status_code = 200
@transaction_decorator
def post(self, request):
pk = request.JSON.get('thread_id', None)
try:
@ -116,12 +121,11 @@ class JournalCreateView(APIView):
s = Storage.objects.create(original=decode_base64(i['data']), name=i['name'])
journal.files.add(s)
if journal.action_type == 'yes':
if action_type == 'yes':
p = Progress.objects.get(course=journal.content_object.course, user=journal.thread.subscribers.all()[0])
p.active_obj = journal.content_object.get_next(['tutorial', 'task'])
p.save()
p.add_vertex(journal.content_object)
return Response(ThreadDetailSerializer(thread).data, status=200)
return Response(JournalSerializer(journal).data, status=200)
return Response("permission denied", status=403)
except Thread.DoesNotExist:
return Response("Thread doesn't exist.", self.status_code,)

Loading…
Cancel
Save