import logging from decimal import Decimal from rest_framework import viewsets from suitablephones.models import Bluetooth, Camera, Device from suitablephones.serializers import (BluetoothSerializer, CameraSerializer, DeviceSerializer, DeviceSerializerShort) # ViewSets define the view behavior. class DeviceViewSet(viewsets.ModelViewSet): queryset = Device.objects.all() serializer_class = DeviceSerializerShort #http://url/api/devices?megapixel=3 def get_queryset(self): name = self.request.query_params.get('name') megapixel = self.request.query_params.get('megapixel') size_in = self.request.query_params.get('size_in') resolution = self.request.query_params.get('resolution') screen_type = self.request.query_params.get('screen_type') #maintainers = self.request.query_params.getlist('maintainers') version = self.request.query_params.get('version') if name: self.queryset = self.queryset.filter(name__icontains=name) if megapixel: self.queryset = self.queryset.filter(cameras__megapixel__gt=Decimal(megapixel)) if version: self.queryset = self.queryset.filter(versions__icontains=version) if size_in: self.queryset = self.queryset.filter(screen__size_in__lt=Decimal(size_in)) if resolution: self.queryset = self.queryset.filter(screen__resolution__icontains=resolution) if screen_type: self.queryset = self.queryset.filter(screen__technology__icontains=screen_type) #if maintainers: self.queryset = self.queryset.filter(maintainers__len__gt=0) return self.queryset def get_cameras(self): return self.request.GET.getlist("cameras") class BluetoothViewSet(viewsets.ModelViewSet): queryset = Bluetooth.objects.all() serializer_class = BluetoothSerializer class CameraViewSet(viewsets.ModelViewSet): queryset = Camera.objects.all() serializer_class = CameraSerializer