views.py 2.1 KB

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