views.py 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  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.permission import IsCustomerUser
  6. from utils import response_ok
  7. from utils.exceptions import CustomError
  8. from apps.usedvehicle.filters import UsedVehicleFilter
  9. from apps.foundation.models import Option
  10. from apps.usedvehicle.models import UsedVehicle
  11. from .serializers import UsedVehicleSerializer, UsedVehicleDetailSerializer
  12. class UsedVehicleListView(generics.ListAPIView):
  13. permission_classes = [IsCustomerUser, ]
  14. queryset = UsedVehicle.objects.filter(delete=False,status=UsedVehicle.STOCK)
  15. serializer_class = UsedVehicleSerializer
  16. def filter_queryset(self, queryset):
  17. f = UsedVehicleFilter(self.request.GET, queryset=queryset)
  18. return f.qs
  19. def list(self, request, *args, **kwargs):
  20. try:
  21. data = super(UsedVehicleListView, self).list(request)
  22. except NotFound:
  23. return response_ok([])
  24. return data
  25. class OptionTypesView(APIView):
  26. def get(self, request):
  27. rows = Option.objects.filter(delete=False, enable=True).order_by('type')
  28. data = {
  29. 'brands': rows.filter(type=Option.USED_VEHICLE_BRAND).values('id', 'name'), #品牌
  30. 'gearboxs': rows.filter(type=Option.VEHICLE_GEARBOX).values('id', 'name'), #汽车变速箱
  31. 'colors': rows.filter(type=Option.VEHICLE_COLOR).values('id', 'name'),#颜色
  32. 'displacements': rows.filter(type=Option.VEHICLE_DISPLACEMENT).values('id', 'name'), #排量
  33. 'emissions': rows.filter(type=Option.VEHICLE_EMISSION).values('id', 'name'),#排放标准
  34. 'seat_counts': rows.filter(type=Option.VEHICLE_SEAT_COUNT).values('id', 'name'),#座位数
  35. 'oil_types': rows.filter(type=Option.VEHICLE_OIL).values('id', 'name'),#燃油类型
  36. }
  37. return response_ok(data)
  38. class UsedVehicleDetailView(generics.RetrieveAPIView):
  39. permission_classes = [IsCustomerUser, ]
  40. queryset = UsedVehicle.objects.filter(delete=False,status=UsedVehicle.STOCK)
  41. serializer_class = UsedVehicleDetailSerializer
  42. def retrieve(self, request, *args, **kwargs):
  43. id = request.GET.get('id')
  44. instance = self.queryset.filter(id=id).first()
  45. if not instance:
  46. raise CustomError(u'未找到相应的车辆!')
  47. serializer = self.get_serializer(instance)
  48. return response_ok(serializer.data)