blob: 93eabb7db630fd7813f14944b6f07a66f038dd0d [file] [log] [blame]
Dirk Vogtf2a33422016-10-11 17:17:26 +02001from rest_framework import generics
Dirk Vogtf2a33422016-10-11 17:17:26 +02002from crashreports.models import Crashreport
Dirk Vogte1784882016-10-13 16:09:38 +02003from django.shortcuts import get_object_or_404
Dirk Vogtc9e10ab2016-10-12 13:58:15 +02004from crashreports.permissions import HasRightsOrIsDeviceOwnerDeviceCreation
Dirk Vogtf2a33422016-10-11 17:17:26 +02005from crashreports.serializers import CrashReportSerializer
6
Dirk Vogtf2a33422016-10-11 17:17:26 +02007
Dirk Vogte1784882016-10-13 16:09:38 +02008class ListCreateView(generics.ListCreateAPIView):
Dirk Vogtf2a33422016-10-11 17:17:26 +02009 queryset = Crashreport.objects.all()
10 paginate_by = 20
Dirk Vogtc9e10ab2016-10-12 13:58:15 +020011 permission_classes = (HasRightsOrIsDeviceOwnerDeviceCreation, )
Dirk Vogtf2a33422016-10-11 17:17:26 +020012 serializer_class = CrashReportSerializer
13 pass
Dirk Vogte1784882016-10-13 16:09:38 +020014
15 def dispatch(self, *args, **kwargs):
16 if 'uuid' in kwargs:
17 self.queryset = Crashreport.objects.filter(
18 device__uuid=kwargs['uuid'])
19 return generics.ListCreateAPIView.dispatch(self, *args, **kwargs)
20
21
22class RetrieveUpdateDestroyView(generics.RetrieveUpdateDestroyAPIView):
23 queryset = Crashreport.objects.all()
24 permission_classes = (HasRightsOrIsDeviceOwnerDeviceCreation, )
25 serializer_class = CrashReportSerializer
Dirk Vogt0d9d5d22016-10-13 16:17:57 +020026 multiple_lookup_fields = {'id', 'device__uuid', 'device_local_id'}
Dirk Vogte1784882016-10-13 16:09:38 +020027
28 def get_object(self):
29 queryset = self.get_queryset()
30 filter = {}
31 for field in self.multiple_lookup_fields:
32 if field in self.kwargs:
33 filter[field] = self.kwargs[field]
34 obj = get_object_or_404(queryset, **filter)
35 self.check_object_permissions(self.request, obj)
36 return obj