from django.shortcuts import render # Create your views here. from rest_framework import generics from rest_framework import permissions from rest_framework.response import Response from rest_framework.views import status from .decorators import validate_request_driver_data from .models import Driver, Kart, Params, Relay from .serializers import DriverSerializer, RelaySerializer, ParamSerializer, KartSerializer import logging logger = logging.getLogger(__name__) class DriversDetailView(generics.ListAPIView): """ Provides a get method handler. """ queryset = Driver.objects.all() serializer_class = DriverSerializer #permission_classes = (permissions.IsAuthenticated,) def get(self, request, *args, **kwargs): try: a_song = self.queryset.get(pk=kwargs["pk"]) return Response(DriverSerializer(a_song).data) except Driver.DoesNotExist: return Response( data={ "message": "Driver with id: {} does not exist".format(kwargs["pk"]) }, status=status.HTTP_404_NOT_FOUND ) #@validate_request_driver_data def put(self, request, *args, **kwargs): try: a_driver = self.queryset.get(pk=kwargs["pk"]) serializer = DriverSerializer(instance=a_driver, data=request.data, partial=True) updated_driver = serializer.update(a_driver, request.data) return Response(DriverSerializer(updated_driver).data) except Driver.DoesNotExist: return Response( data={ "message": "Driver with id: {} does not exist".format(kwargs["pk"]) }, status=status.HTTP_404_NOT_FOUND ) def delete(self, request, *args, **kwargs): try: a_driver = self.queryset.get(pk=kwargs["pk"]) a_driver.delete() return Response(status=status.HTTP_204_NO_CONTENT) except Driver.DoesNotExist: return Response( data={ "message": "Driver with id: {} does not exist".format(kwargs["pk"]) }, status=status.HTTP_404_NOT_FOUND ) class KartsDetailView(generics.ListAPIView): """ Provides a get method handler. """ queryset = Kart.objects.all() serializer_class = KartSerializer #permission_classes = (permissions.IsAuthenticated,) def get(self, request, *args, **kwargs): try: a_song = self.queryset.get(pk=kwargs["pk"]) return Response(KartSerializer(a_song).data) except Kart.DoesNotExist: return Response( data={ "message": "Kart with id: {} does not exist".format(kwargs["pk"]) }, status=status.HTTP_404_NOT_FOUND ) #@validate_request_driver_data def put(self, request, *args, **kwargs): try: a_driver = self.queryset.get(pk=kwargs["pk"]) serializer = KartSerializer(instance=a_driver, data=request.data, partial=True) updated_driver = serializer.update(a_driver, request.data) return Response(KartSerializer(updated_driver).data) except Kart.DoesNotExist: return Response( data={ "message": "Kart with id: {} does not exist".format(kwargs["pk"]) }, status=status.HTTP_404_NOT_FOUND ) def delete(self, request, *args, **kwargs): try: a_driver = self.queryset.get(pk=kwargs["pk"]) a_driver.delete() return Response(status=status.HTTP_204_NO_CONTENT) except Kart.DoesNotExist: return Response( data={ "message": "Kart with id: {} does not exist".format(kwargs["pk"]) }, status=status.HTTP_404_NOT_FOUND ) class ListCreateDriversView(generics.ListCreateAPIView): """ GET songs/ POST songs/ """ queryset = Driver.objects.all() serializer_class = DriverSerializer #permission_classes = (permissions.IsAuthenticated,) #@validate_request_driver_data def post(self, request, *args, **kwargs): logger.error('ListCreateDriversView => post') a_song = Driver.objects.create( first_name=request.data["first_name"], last_name=request.data["last_name"], order=request.data["order"], ref_time=request.data["ref_time"], kart_id=request.data["kart_id"] ) return Response( data=DriverSerializer(a_song).data, status=status.HTTP_201_CREATED ) class ListCreateKartsView(generics.ListCreateAPIView): """ GET songs/ POST songs/ """ queryset = Kart.objects.all() serializer_class = KartSerializer #permission_classes = (permissions.IsAuthenticated,) #@validate_request_driver_data def post(self, request, *args, **kwargs): logger.error('ListCreateKartsView => post') a_song = Kart.objects.create( first_name=request.data["first_name"], last_name=request.data["last_name"], order=request.data["order"], ref_time=request.data["ref_time"], kart_id=request.data["kart_id"] ) return Response( data=DriverSerializer(a_song).data, status=status.HTTP_201_CREATED )