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 ThreadDetailSerializer, 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,) @staticmethod def get(request, key): try: thread = Thread.objects.get(key=key) if thread.check_perm(request.user): return Response(ThreadDetailSerializer(thread).data, status=200) return Response("permission denied", status=403) except Thread.DoesNotExist: return Response("Thread not found", status=404)