blob: c37685b77cbd3e3a347e81ba516a028d61d0f708 [file] [log] [blame]
from rest_framework.decorators import api_view
from rest_framework.decorators import parser_classes
from rest_framework.decorators import permission_classes
from rest_framework.parsers import FileUploadParser
from rest_framework.permissions import IsAuthenticated
from rest_framework.exceptions import PermissionDenied
from rest_framework.exceptions import NotFound
from rest_framework.response import Response
from crashreports.models import LogFile
from crashreports.models import Crashreport
from crashreports.permissions import user_owns_uuid
from crashreports.permissions import user_is_hiccup_staff
@api_view(http_method_names=['POST'], )
@parser_classes([FileUploadParser, ])
@permission_classes([IsAuthenticated, ])
def logfile_put(request, uuid, device_local_id, filename):
try:
crashreport = Crashreport.objects.get(device__uuid=uuid,
device_local_id=device_local_id)
except:
raise NotFound(detail="Crashreport does not exist.")
if (not (user_owns_uuid(request.user, crashreport.device.uuid)
or user_is_hiccup_staff(request.user))):
raise PermissionDenied(detail="Not allowed.")
f = request.data["file"]
logfile = LogFile(crashreport=crashreport, logfile=f)
logfile.save()
return Response(status=201)