blob: 81f61c3e64851305def7a282d054652bffa26438 [file] [log] [blame]
Dirk Vogt7160b5e2016-10-12 17:04:40 +02001from rest_framework.decorators import api_view
2from rest_framework.decorators import parser_classes
3from rest_framework.decorators import permission_classes
4
5from rest_framework.parsers import FileUploadParser
6from rest_framework.permissions import IsAuthenticated
7from rest_framework.exceptions import PermissionDenied
8from rest_framework.exceptions import NotFound
9
10
11from rest_framework.response import Response
12from crashreports.models import LogFile
13from crashreports.models import Crashreport
14from crashreports.permissions import user_owns_uuid
15from crashreports.permissions import user_is_hiccup_staff
16
17
18@api_view(http_method_names=['POST'], )
19@parser_classes(FileUploadParser)
20@permission_classes(IsAuthenticated,)
21def logfile_put(request, crashreport_pk):
22 try:
23 crashreport = Crashreport.objects.get(crashreport_pk)
24 except:
25 raise NotFound(detail="crashreport does not exist")
26 if (not (user_owns_uuid(request.user, crashreport.device.uuid)
27 or user_is_hiccup_staff(request.user))):
28 raise PermissionDenied(detail="Not allowed.")
29 logfile = LogFile(crashreport=crashreport, logfile=request.data["file"])
30 logfile.save()
31 return Response(201, data={'result': 'ok'})