You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

53 lines
1.9 KiB

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
from journals.models import Thread
from journals.serilizers import ThreadUserSerializer, ThreadAdminSerializer
class ThreadAdminListView(APIView):
renderer_classes = (JSONRenderer,)
status_code = 200
def get(self, request):
return Response(
[ThreadAdminSerializer(thread).data for thread in Thread.objects.filter(is_staff=True)],
self.status_code,
)
class ThreadDetailView(APIView):
renderer_classes = (JSONRenderer,)
status_code = 200
def post(self, request, key):
try:
thread = Thread.objects.get(key=key)
thread.text = request.JSON.get('text', thread.text)
thread.key = request.JSON.get('key', thread.key)
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,)
except Thread.DoesNotExist:
return Response("Thread doesn't exist.", self.status_code,)
def get(self, request, key):
try:
return Response(ThreadUserSerializer(Thread.objects.get(key=key)).data, self.status_code)
except Thread.DoesNotExist:
return Response("Thread not found", status=404)
class TeacherThreadListView(APIView):
renderer_classes = (JSONRenderer,)
@transaction_decorator
def get(self, request):
if not request.user.is_authenticated and not 'teachers' in request.user.groups:
return Response("Permission denied", status=403)
threads = Thread.objects.filter(Q(subscribers=request.user) | Q(groups__user=request.user))
return Response([ThreadUserSerializer(i).data for i in threads])