blob: c37685b77cbd3e3a347e81ba516a028d61d0f708 [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
Dirk Vogt7160b5e2016-10-12 17:04:40 +020010from rest_framework.response import Response
11from crashreports.models import LogFile
12from crashreports.models import Crashreport
13from crashreports.permissions import user_owns_uuid
14from crashreports.permissions import user_is_hiccup_staff
15
16
17@api_view(http_method_names=['POST'], )
Dirk Vogt36635692016-10-17 12:19:10 +020018@parser_classes([FileUploadParser, ])
19@permission_classes([IsAuthenticated, ])
20def logfile_put(request, uuid, device_local_id, filename):
Dirk Vogt7160b5e2016-10-12 17:04:40 +020021 try:
Dirk Vogt36635692016-10-17 12:19:10 +020022 crashreport = Crashreport.objects.get(device__uuid=uuid,
23 device_local_id=device_local_id)
Dirk Vogt7160b5e2016-10-12 17:04:40 +020024 except:
Dirk Vogt36635692016-10-17 12:19:10 +020025 raise NotFound(detail="Crashreport does not exist.")
26
Dirk Vogt7160b5e2016-10-12 17:04:40 +020027 if (not (user_owns_uuid(request.user, crashreport.device.uuid)
28 or user_is_hiccup_staff(request.user))):
29 raise PermissionDenied(detail="Not allowed.")
Dirk Vogt36635692016-10-17 12:19:10 +020030 f = request.data["file"]
31 logfile = LogFile(crashreport=crashreport, logfile=f)
Dirk Vogt7160b5e2016-10-12 17:04:40 +020032 logfile.save()
Dirk Vogt36635692016-10-17 12:19:10 +020033 return Response(status=201)