views.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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. #maintainers = self.request.query_params.getlist('maintainers')
  16. version = self.request.query_params.get('version')
  17. if name:
  18. self.queryset = self.queryset.filter(name__icontains=name)
  19. if megapixel:
  20. self.queryset = self.queryset.filter(cameras__megapixel__gt=Decimal(megapixel))
  21. if version:
  22. self.queryset = self.queryset.filter(versions__icontains=version)
  23. #if maintainers:
  24. self.queryset = self.queryset.filter(maintainers__len__gt=0)
  25. return self.queryset
  26. def get_cameras(self):
  27. return self.request.GET.getlist("cameras")
  28. class BluetoothViewSet(viewsets.ModelViewSet):
  29. queryset = Bluetooth.objects.all()
  30. serializer_class = BluetoothSerializer
  31. class CameraViewSet(viewsets.ModelViewSet):
  32. queryset = Camera.objects.all()
  33. serializer_class = CameraSerializer