Add routes and custom serialiser

Add requirements
This commit is contained in:
bglacial 2019-04-18 21:43:22 +02:00
parent 31d5f7ade4
commit 1b1a19ae9d
6 changed files with 78 additions and 26 deletions

Binary file not shown.

View File

@ -1,6 +1,8 @@
Django==2.0.3
django-cors-headers==2.5.2
djangorestframework==3.7.7
djangorestframework-jwt==1.11.0
djangorestframework-stubs==0.4.2
gunicorn==19.7.1
PyJWT==1.6.1
pytz==2018.3

View File

@ -33,6 +33,7 @@ class Params(models.Model):
autonomy = models.IntegerField()
default_relay = models.IntegerField()
stand_minimum_time = models.IntegerField()
comment = models.CharField(max_length=250)
class Relay(models.Model):
@ -40,16 +41,16 @@ class Relay(models.Model):
driver = models.ForeignKey(Driver, on_delete=models.CASCADE)
# Fk kart
kart = models.ForeignKey(Kart, on_delete=models.CASCADE)
#Starting timestamp for the relay
# Starting timestamp for the relay
relay_start = models.DateTimeField()
#ending timestamp for the relay
# ending timestamp for the relay
relay_end = models.DateTimeField(default=None, blank=True, null=True)
#Does the previous pilot refuel
# Does the previous pilot refuel
has_refuel = models.BooleanField(default=False)
#Average chrono for the pulot on this relay
# Average chrono for the pulot on this relay
driver_chrono = models.IntegerField(default=None, blank=True, null=True)
#ending timestamp for the relay
# ending timestamp for the relay
relay_autonomy = models.IntegerField(default=None, blank=True, null=True)
#comment the relay
# comment the relay
comment = models.CharField(max_length=256, default=None, blank=True, null=True)

View File

@ -1,5 +1,4 @@
from rest_framework import serializers
from django.contrib.auth.models import User
from .models import Driver, Kart, Params, Relay
@ -41,6 +40,23 @@ class KartSerializer(serializers.ModelSerializer):
return Kart.objects.create(**validated_data)
class KartSimpleSerializer(serializers.ModelSerializer):
class Meta:
model = Kart
fields = ('id', 'name', 'autonomy')
def update(self, instance, validated_data):
instance.name = validated_data.get("name", instance.name)
instance.autonomy = validated_data.get("autonomy", instance.autonomy)
instance.comment = validated_data.get("comment", instance.comment)
instance.save()
return instance
def create(self, validated_data):
return Kart.objects.create(**validated_data)
class RelaySerializer(serializers.ModelSerializer):
class Meta:
model = Relay
@ -66,12 +82,13 @@ class RelaySerializer(serializers.ModelSerializer):
class ParamSerializer(serializers.ModelSerializer):
class Meta:
model = Params
fields = ('id', 'default_relay', 'autonomy', 'stand_minimum_time')
fields = ('id', 'default_relay', 'autonomy', 'stand_minimum_time', 'comment')
def update(self, instance, validated_data):
instance.default_relay = validated_data.get("default_relay", instance.default_relay)
instance.autonomy = validated_data.get("autonomy", instance.autonomy)
instance.stand_minimum_time = validated_data.get("stand_minimum_time", instance.stand_minimum_time)
instance.comment = validated_data.get("comment", instance.comment)
instance.save()
return instance

View File

@ -1,5 +1,5 @@
from django.urls import path
from .views import ListCreateDriversView, DriversDetailView, KartsDetailView, ListCreateKartsView#, ListCreateRulesView, RulesDetailView, \
from .views import ListCreateDriversView, DriversDetailView, KartsDetailView, ListCreateKartsView, ParamsDetailView#, ListCreateRulesView, RulesDetailView, \
#ListCreateKartsView, KartsDetailView, ListCreateRelaysView, RelaysDetailView, ListCreateRacesView, \
#RacesDetailView
@ -8,11 +8,11 @@ urlpatterns = [
path('drivers/<int:pk>/', DriversDetailView.as_view(), name="drivers-detail"),
path('karts/', ListCreateKartsView.as_view(), name="karts-list-create"),
path('karts/<int:pk>/', KartsDetailView.as_view(), name="drivers-detail"),
# path('karts/<int:pk>/', KartsDetailView.as_view(), name="karts-detail"),
# path('rules/', ListCreateRulesView.as_view(), name="rules-list-create"),
# path('rules/<int:pk>/', RulesDetailView.as_view(), name="rules-detail"),
# path('relays/', ListCreateRelaysView.as_view(), name="relays-list-create"),
# path('relays/<int:pk>/', RelaysDetailView.as_view(), name="relays-detail"),
# path('races/', ListCreateRacesView.as_view(), name="races-list-create"),
# path('races/<int:pk>/', RacesDetailView.as_view(), name="races-detail"),
# path('karts/<int:pk>/', KartsDetailView.as_view(), name="karts-detail"),
# path('rules/', ListCreateRulesView.as_view(), name="rules-list-create"),
path('params/<int:pk>/', ParamsDetailView.as_view(), name="rules-detail"),
# path('relays/', ListCreateRelaysView.as_view(), name="relays-list-create"),
# path('relays/<int:pk>/', RelaysDetailView.as_view(), name="relays-detail"),
# path('races/', ListCreateRacesView.as_view(), name="races-list-create"),
# path('races/<int:pk>/', RacesDetailView.as_view(), name="races-detail"),
]

View File

@ -9,7 +9,7 @@ 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
from .serializers import DriverSerializer, RelaySerializer, ParamSerializer, KartSerializer, KartSimpleSerializer
import logging
logger = logging.getLogger(__name__)
@ -113,6 +113,42 @@ class KartsDetailView(generics.ListAPIView):
)
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/
@ -145,20 +181,16 @@ class ListCreateKartsView(generics.ListCreateAPIView):
"""
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"]
a_kart = Kart.objects.create(
name=request.data["name"],
autonomy=request.data["last_name"],
comment=request.data["order"]
)
return Response(
data=DriverSerializer(a_song).data,
data=DriverSerializer(a_kart).data,
status=status.HTTP_201_CREATED
)