123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- 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)
- class SearchDeviceViewSet(viewsets.ModelViewSet):
- queryset = Device.objects.all()
- serializer_class = DeviceSerializer
- def get_queryset(self):
- query = self.request.query_params.get('q')
- if query:
- self.queryset = self.queryset.filter(codename__icontains=query) | self.queryset.filter(name__icontains=query) | self.queryset.filter(vendor__icontains=query)
- return self.queryset
- class SingleDeviceViewSet(viewsets.ModelViewSet):
- queryset = Device.objects.all()
- serializer_class = DeviceSerializer
- def get_queryset(self):
- codename = self.request.query_params.get('codename')
- if codename:
- self.queryset = self.queryset.filter(codename__icontains=codename)
- return self.queryset
- # 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
|