127 lines
4.4 KiB
Python
127 lines
4.4 KiB
Python
from django.core.paginator import Paginator
|
|
from django.db.models import Q
|
|
from django.http import JsonResponse
|
|
from django.views.decorators.csrf import csrf_exempt
|
|
from rest_framework import permissions, status, viewsets, generics
|
|
from rest_framework.views import APIView
|
|
from rest_framework.response import Response
|
|
from django.contrib.auth import authenticate
|
|
from django.shortcuts import render
|
|
|
|
from inventory.utils import get_user_type
|
|
from . import models, serializers
|
|
from .services import get_car_data, get_from_cardatabase
|
|
# from rest_framework.authtoken.models import Token
|
|
from django.utils.decorators import method_decorator
|
|
from inventory import models as inventory_models
|
|
|
|
|
|
|
|
class LoginView(APIView):
|
|
permission_classes = [permissions.AllowAny,]
|
|
|
|
# def post(self, request, *args, **kwargs):
|
|
# username = request.data.get('username')
|
|
# password = request.data.get('password')
|
|
|
|
# if username is None or password is None:
|
|
# return Response({'error': 'Please provide both username and password.'}, status=status.HTTP_400_BAD_REQUEST)
|
|
|
|
# user = authenticate(username=username, password=password)
|
|
|
|
# if not user:
|
|
# return Response({'error': 'Invalid credentials.'}, status=status.HTTP_401_UNAUTHORIZED)
|
|
|
|
# token, created = Token.objects.get_or_create(user=user)
|
|
# return Response({'token': token.key, 'user_id': user.id, 'username': user.username}, status=status.HTTP_200_OK)
|
|
|
|
|
|
class CarVINViewSet(APIView):
|
|
queryset = models.CarVIN.objects.all().order_by('-created')
|
|
serializer_class = serializers.CarVINSerializer
|
|
|
|
def get(self, request):
|
|
vin = models.CarVIN.objects.all()
|
|
serializer = serializers.CarVINSerializer(vin, many=True)
|
|
return Response(serializer.data)
|
|
|
|
def post(self, request):
|
|
serializer = serializers.CarVINSerializer(data=request.data)
|
|
if serializer.is_valid(raise_exception=True):
|
|
for key, value in serializer.validated_data.items():
|
|
print(key, value)
|
|
get_car_data(value)
|
|
# get_from_cardatabase(value)
|
|
serializer.save()
|
|
return Response(serializer.data, status=status.HTTP_201_CREATED)
|
|
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
|
|
|
|
|
class CarMakeViewSet(viewsets.ModelViewSet):
|
|
queryset = inventory_models.CarMake.objects.filter(is_sa_import=True)
|
|
serializer_class = serializers.CarMakeSerializer
|
|
|
|
|
|
class CarModelViewSet(viewsets.ModelViewSet):
|
|
queryset = inventory_models.CarModel.objects.filter(id_car_make__is_sa_import=True)
|
|
serializer_class = serializers.CarModelSerializer
|
|
|
|
|
|
class CarSerieViewSet(viewsets.ModelViewSet):
|
|
queryset = inventory_models.CarSerie.objects.all()
|
|
serializer_class = serializers.CarSerieSerializer
|
|
|
|
|
|
class CarTrimViewSet(viewsets.ModelViewSet):
|
|
queryset = inventory_models.CarTrim.objects.all()
|
|
serializer_class = serializers.CarTrimSerializer
|
|
|
|
|
|
class CarEquipmentViewSet(viewsets.ModelViewSet):
|
|
queryset = inventory_models.CarEquipment.objects.all()
|
|
serializer_class = serializers.CarEquipmentSerializer
|
|
|
|
|
|
class CarSpecificationViewSet(viewsets.ModelViewSet):
|
|
queryset = inventory_models.CarSpecification.objects.all()
|
|
serializer_class = serializers.CarSpecificationSerializer
|
|
|
|
|
|
class CarSpecificationValueViewSet(viewsets.ModelViewSet):
|
|
queryset = inventory_models.CarSpecificationValue.objects.all()
|
|
serializer_class = serializers.CarSpecificationValueSerializer
|
|
|
|
|
|
class CarOptionViewSet(viewsets.ModelViewSet):
|
|
queryset = inventory_models.CarOption.objects.all()
|
|
serializer_class = serializers.CarOptionSerializer
|
|
|
|
|
|
class CarOptionValueViewSet(viewsets.ModelViewSet):
|
|
queryset = inventory_models.CarOptionValue.objects.all()
|
|
serializer_class = serializers.CarOptionValueSerializer
|
|
|
|
|
|
|
|
def car_list(request):
|
|
dealer = get_user_type(request)
|
|
page = request.GET.get("page", 1)
|
|
per_page = 10
|
|
|
|
cars = inventory_models.Car.objects.filter(dealer=dealer).values(
|
|
"vin",
|
|
"id_car_make__name",
|
|
"id_car_model__name",
|
|
"status"
|
|
)
|
|
|
|
paginator = Paginator(cars, per_page)
|
|
page_obj = paginator.get_page(page)
|
|
|
|
return JsonResponse({
|
|
"data": list(page_obj), # Convert QuerySet to list
|
|
"page": page_obj.number, # Current page number
|
|
"per_page": per_page,
|
|
"total_pages": paginator.num_pages, # Total pages
|
|
"total_items": paginator.count # Total records
|
|
}) |