Dirk Vogt | 7160b5e | 2016-10-12 17:04:40 +0200 | [diff] [blame^] | 1 | from rest_framework.decorators import api_view |
| 2 | from rest_framework.decorators import parser_classes |
| 3 | from rest_framework.decorators import permission_classes |
| 4 | |
| 5 | from rest_framework.parsers import FileUploadParser |
| 6 | from rest_framework.permissions import IsAuthenticated |
| 7 | from rest_framework.exceptions import PermissionDenied |
| 8 | from rest_framework.exceptions import NotFound |
| 9 | |
| 10 | |
| 11 | from rest_framework.response import Response |
| 12 | from crashreports.models import LogFile |
| 13 | from crashreports.models import Crashreport |
| 14 | from crashreports.permissions import user_owns_uuid |
| 15 | from crashreports.permissions import user_is_hiccup_staff |
| 16 | |
| 17 | |
| 18 | @api_view(http_method_names=['POST'], ) |
| 19 | @parser_classes(FileUploadParser) |
| 20 | @permission_classes(IsAuthenticated,) |
| 21 | def 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'}) |