blob: f70dbab522010e6ddf1229b1faecc1796a1d1c6e [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
Dirk Vogte1784882016-10-13 16:09:38 +02006from rest_framework import exceptions
7import traceback
Dirk Vogtf2a33422016-10-11 17:17:26 +02008
Dirk Vogtf2a33422016-10-11 17:17:26 +02009
Dirk Vogte1784882016-10-13 16:09:38 +020010class ListCreateView(generics.ListCreateAPIView):
Dirk Vogtf2a33422016-10-11 17:17:26 +020011 queryset = Crashreport.objects.all()
12 paginate_by = 20
Dirk Vogtc9e10ab2016-10-12 13:58:15 +020013 permission_classes = (HasRightsOrIsDeviceOwnerDeviceCreation, )
Dirk Vogtf2a33422016-10-11 17:17:26 +020014 serializer_class = CrashReportSerializer
15 pass
Dirk Vogte1784882016-10-13 16:09:38 +020016
17 def dispatch(self, *args, **kwargs):
18 if 'uuid' in kwargs:
19 self.queryset = Crashreport.objects.filter(
20 device__uuid=kwargs['uuid'])
21 return generics.ListCreateAPIView.dispatch(self, *args, **kwargs)
22
23
24class RetrieveUpdateDestroyView(generics.RetrieveUpdateDestroyAPIView):
25 queryset = Crashreport.objects.all()
26 permission_classes = (HasRightsOrIsDeviceOwnerDeviceCreation, )
27 serializer_class = CrashReportSerializer
28 multiple_lookup_fields = {'id', 'uuid', 'device_local_id'}
29
30 def get_object(self):
31 queryset = self.get_queryset()
32 filter = {}
33 for field in self.multiple_lookup_fields:
34 if field in self.kwargs:
35 filter[field] = self.kwargs[field]
36 obj = get_object_or_404(queryset, **filter)
37 self.check_object_permissions(self.request, obj)
38 return obj