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.
83 lines
2.4 KiB
83 lines
2.4 KiB
import base64
|
|
import json
|
|
|
|
from rest_framework.parsers import MultiPartParser, FileUploadParser, FormParser
|
|
from rest_framework.renderers import JSONRenderer, BrowsableAPIRenderer
|
|
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
|
|
from django.core.files.base import ContentFile
|
|
|
|
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, BrowsableAPIRenderer)
|
|
parser_classes = (MultiPartParser,)
|
|
|
|
@staticmethod
|
|
def post(request):
|
|
user_token = request.POST.get("user_token", None)
|
|
text = request.POST.get("text", None)
|
|
|
|
if user_token is None:
|
|
return Response('user_token не передан', status=400)
|
|
|
|
comment = Comment.objects.create(
|
|
text=text,
|
|
user_key=user_token,
|
|
)
|
|
for key in request.FILES:
|
|
f = request.FILES[key]
|
|
fo = File(
|
|
original=f,
|
|
name=f.name,
|
|
user_key=user_token,
|
|
)
|
|
fo.save()
|
|
comment.files.add(fo)
|
|
|
|
return Response(CommentSerializer(comment).data, status=200)
|
|
|