12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- # coding=utf-8
- from django.db import transaction
- from django.db.models import F
- from django.conf import settings
- from rest_framework import generics, mixins
- from rest_framework.viewsets import GenericViewSet
- from rest_framework.views import APIView
- from rest_framework.decorators import action
- from rest_framework.exceptions import NotFound
- from utils import response_ok
- from utils.permission import IsCustomerUser
- from utils.exceptions import CustomError
- from apps.product.models import Product
- from apps.usedvehicle.filters import UsedVehicleFilter
- from apps.account import tenant_log
- from apps.foundation.models import BizLog, Option
- from apps.customer.models import Customer
- from apps.foundation.filters import OptionFilter
- from apps.usedvehicle.models import UsedVehicle
- from .serializers import UsedVehicleSerializer, UsedVehicleDetailSerializer, UsedVehicleOptionSerializer
- class UsedVehicleListView(generics.ListAPIView):
- queryset = UsedVehicle.objects.filter(delete=False,status=UsedVehicle.STOCK)
- serializer_class = UsedVehicleSerializer
- def filter_queryset(self, queryset):
- f = UsedVehicleFilter(self.request.GET, queryset=queryset)
- return f.qs
- def list(self, request, *args, **kwargs):
- try:
- data = super(UsedVehicleListView, self).list(request)
- except NotFound:
- return response_ok([])
- return data
- class OptionTypesView(APIView):
- def get(self, request):
- rows = Option.objects.filter(delete=False, enable=True).order_by('type')
- data = {
- 'gearboxs': rows.filter(type=Option.VEHICLE_GEARBOX).values('id', 'name'),
- 'colors': rows.filter(type=Option.VEHICLE_COLOR).values('id', 'name'),
- 'displacements': rows.filter(type=Option.VEHICLE_DISPLACEMENT).values('id', 'name'),
- 'emissions': rows.filter(type=Option.VEHICLE_EMISSION).values('id', 'name'),
- 'seat_counts': rows.filter(type=Option.VEHICLE_SEAT_COUNT).values('id', 'name'),
- 'oil_types': rows.filter(type=Option.VEHICLE_OIL).values('id', 'name'),
- }
- return response_ok(data)
- class UsedVehicleDetailView(generics.RetrieveAPIView):
- queryset = UsedVehicle.objects.filter(delete=False,status=UsedVehicle.STOCK)
- serializer_class = UsedVehicleDetailSerializer
- def retrieve(self, request, *args, **kwargs):
- id = request.GET.get('id')
- instance = self.queryset.filter(id=id).first()
- if not instance:
- raise CustomError(u'未找到相应的车辆!')
- serializer = self.get_serializer(instance)
- return response_ok(serializer.data)
|