2019-04-18 21:43:22 +02:00

197 lines
6.5 KiB
Python

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, KartSimpleSerializer
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 ParamsDetailView(generics.ListAPIView):
"""
Provides a get method handler.
"""
queryset = Params.objects.all()
serializer_class = ParamSerializer
#permission_classes = (permissions.IsAuthenticated,)
def get(self, request, *args, **kwargs):
try:
a_param = self.queryset.get(pk=kwargs["pk"])
return Response(ParamSerializer(a_param).data)
except Params.DoesNotExist:
return Response(
data={
"message": "Param 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_param = self.queryset.get(pk=kwargs["pk"])
serializer = ParamSerializer(instance=a_param, data=request.data, partial=True)
updated_param = serializer.update(a_param, request.data)
return Response(ParamSerializer(updated_param).data)
except Params.DoesNotExist:
return Response(
data={
"message": "Param 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
#@validate_request_driver_data
def post(self, request, *args, **kwargs):
a_kart = Kart.objects.create(
name=request.data["name"],
autonomy=request.data["last_name"],
comment=request.data["order"]
)
return Response(
data=DriverSerializer(a_kart).data,
status=status.HTTP_201_CREATED
)