views.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. # coding=utf-8
  2. from rest_framework import generics
  3. from rest_framework.views import APIView
  4. from rest_framework.exceptions import NotFound
  5. from utils import response_ok
  6. from utils.exceptions import CustomError
  7. from apps.usedvehicle.filters import UsedVehicleFilter
  8. from apps.foundation.models import Option
  9. from apps.usedvehicle.models import UsedVehicle
  10. from .serializers import UsedVehicleSerializer, UsedVehicleDetailSerializer, UsedVehicleOptionSerializer
  11. class UsedVehicleListView(generics.ListAPIView):
  12. queryset = UsedVehicle.objects.filter(delete=False,status=UsedVehicle.STOCK)
  13. serializer_class = UsedVehicleSerializer
  14. def filter_queryset(self, queryset):
  15. f = UsedVehicleFilter(self.request.GET, queryset=queryset)
  16. return f.qs
  17. def list(self, request, *args, **kwargs):
  18. try:
  19. data = super(UsedVehicleListView, self).list(request)
  20. except NotFound:
  21. return response_ok([])
  22. return data
  23. class OptionTypesView(APIView):
  24. def get(self, request):
  25. rows = Option.objects.filter(delete=False, enable=True).order_by('type')
  26. data = {
  27. 'gearboxs': rows.filter(type=Option.VEHICLE_GEARBOX).values('id', 'name'),
  28. 'colors': rows.filter(type=Option.VEHICLE_COLOR).values('id', 'name'),
  29. 'displacements': rows.filter(type=Option.VEHICLE_DISPLACEMENT).values('id', 'name'),
  30. 'emissions': rows.filter(type=Option.VEHICLE_EMISSION).values('id', 'name'),
  31. 'seat_counts': rows.filter(type=Option.VEHICLE_SEAT_COUNT).values('id', 'name'),
  32. 'oil_types': rows.filter(type=Option.VEHICLE_OIL).values('id', 'name'),
  33. }
  34. return response_ok(data)
  35. class UsedVehicleDetailView(generics.RetrieveAPIView):
  36. queryset = UsedVehicle.objects.filter(delete=False,status=UsedVehicle.STOCK)
  37. serializer_class = UsedVehicleDetailSerializer
  38. def retrieve(self, request, *args, **kwargs):
  39. id = request.GET.get('id')
  40. instance = self.queryset.filter(id=id).first()
  41. if not instance:
  42. raise CustomError(u'未找到相应的车辆!')
  43. serializer = self.get_serializer(instance)
  44. return response_ok(serializer.data)