views.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import logging
  2. from decimal import Decimal
  3. from rest_framework import viewsets
  4. from suitablephones.models import Bluetooth, Camera, Device
  5. from suitablephones.serializers import (BluetoothSerializer, CameraSerializer,
  6. DeviceSerializer)
  7. # ViewSets define the view behavior.
  8. class DeviceViewSet(viewsets.ModelViewSet):
  9. queryset = Device.objects.all()
  10. serializer_class = DeviceSerializer
  11. #http://url/api/devices?megapixel=3
  12. def get_queryset(self):
  13. name = self.request.query_params.get('name')
  14. megapixel = self.request.query_params.get('megapixel')
  15. size_in = self.request.query_params.get('size_in')
  16. resolution = self.request.query_params.get('resolution')
  17. screen_type = self.request.query_params.get('screen_type')
  18. #maintainers = self.request.query_params.getlist('maintainers')
  19. version = self.request.query_params.get('version')
  20. if name:
  21. self.queryset = self.queryset.filter(name__icontains=name)
  22. if megapixel:
  23. self.queryset = self.queryset.filter(cameras__megapixel__gt=Decimal(megapixel))
  24. if version:
  25. self.queryset = self.queryset.filter(versions__icontains=version)
  26. if size_in:
  27. self.queryset = self.queryset.filter(screen__size_in__gt=Decimal(size_in))
  28. if resolution:
  29. self.queryset = self.queryset.filter(screen__resolution__icontains=resolution)
  30. if screen_type:
  31. self.queryset = self.queryset.filter(screen__technology__icontains=screen_type)
  32. #if maintainers:
  33. self.queryset = self.queryset.filter(maintainers__len__gt=0)
  34. return self.queryset
  35. def get_cameras(self):
  36. return self.request.GET.getlist("cameras")
  37. class BluetoothViewSet(viewsets.ModelViewSet):
  38. queryset = Bluetooth.objects.all()
  39. serializer_class = BluetoothSerializer
  40. class CameraViewSet(viewsets.ModelViewSet):
  41. queryset = Camera.objects.all()
  42. serializer_class = CameraSerializer