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.
 
 
 
 
 
 

69 lines
2.0 KiB

import base64
import json
from rest_framework.renderers import JSONRenderer
from rest_framework.response import Response
from rest_framework.views import APIView
from storage.api import add_comment
from storage.models import File, Comment
from storage.serializers import FileSerializer, CommentSerializer
class FileView(APIView):
renderer_classes = (JSONRenderer,)
@staticmethod
def get(request):
tokens = request.GET.getlist('tokens', None)
if not tokens:
return Response("Attribute tokens not set", status=400)
file_list = []
for token in tokens:
try:
file_list.append(FileSerializer(File.objects.get(token=token)).data)
except File.DoesNotExist:
file_list.append({'upload': 'error'})
return Response(file_list, status=200)
class CommentView(APIView):
renderer_classes = (JSONRenderer,)
@staticmethod
def post(request):
base64_tokens = request.JSON.get('base64_tokens', None)
if not base64_tokens:
return Response("Attribute token not set", status=400)
tokens = json.loads(base64.b64decode(base64_tokens).decode('utf-8'))
comments = []
for token in tokens:
try:
comment = Comment.objects.get(token=token)
comments.append(comment)
except Comment.DoesNotExist:
pass
return Response([CommentSerializer(comment).data for comment in comments], status=200)
class CreateCommentView(APIView):
renderer_classes = (JSONRenderer,)
@staticmethod
def post(request):
text = request.JSON.get('text', None)
user_key = request.JSON.get('user_token', None)
files = request.JSON.get('files', [])
if user_key:
comment = add_comment(text=text, out_key=user_key, files=files)
return Response(CommentSerializer(comment).data, status=200)
return Response("user_token mast be set", status=400)