views.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. # coding=utf-8
  2. from rest_framework import generics
  3. from utils import response_ok
  4. from utils.exceptions import CustomError
  5. from .serializers import SeriesSerializer, ModelSerializer, ModelDetailSerializer
  6. from apps.vehicle.filters import SeriesFilter, ModelFilter
  7. from apps.vehicle.models import Series, Model
  8. from utils.permission import IsCustomerUser
  9. class SeriesListViewSet(generics.ListAPIView):
  10. permission_classes = [IsCustomerUser, ]
  11. queryset = Series.objects.filter(enabled=True, delete=False)
  12. serializer_class = SeriesSerializer
  13. def filter_queryset(self, queryset):
  14. f = SeriesFilter(self.request.GET, queryset=queryset)
  15. return f.qs
  16. def list(self, request, *args, **kwargs):
  17. queryset = self.filter_queryset(self.get_queryset())
  18. serializer = self.get_serializer(queryset, many=True)
  19. return response_ok(serializer.data)
  20. class ModelListViewSet(generics.ListAPIView):
  21. permission_classes = [IsCustomerUser, ]
  22. queryset = Model.objects.filter(enabled=True, delete=False)
  23. serializer_class = ModelSerializer
  24. def filter_queryset(self, queryset):
  25. f = ModelFilter(self.request.GET, queryset=queryset)
  26. return f.qs
  27. def list(self, request, *args, **kwargs):
  28. queryset = self.filter_queryset(self.get_queryset())
  29. serializer = self.get_serializer(queryset, many=True)
  30. return response_ok(serializer.data)
  31. class ModelDetailViewSet(generics.RetrieveAPIView):
  32. permission_classes = [IsCustomerUser, ]
  33. queryset = Model.objects.filter(enabled=True, delete=False)
  34. serializer_class = ModelDetailSerializer
  35. def retrieve(self, request, *args, **kwargs):
  36. id = request.GET.get('id')
  37. instance = self.queryset.filter(id=id).first()
  38. if not instance:
  39. raise CustomError(u'未找到相应的车辆!')
  40. serializer = self.get_serializer(instance)
  41. return response_ok(serializer.data)