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==2.0.3
django-cors-headers==2.5.2
djangorestframework==3.7.7 djangorestframework==3.7.7
djangorestframework-jwt==1.11.0 djangorestframework-jwt==1.11.0
djangorestframework-stubs==0.4.2
gunicorn==19.7.1 gunicorn==19.7.1
PyJWT==1.6.1 PyJWT==1.6.1
pytz==2018.3 pytz==2018.3

View File

@ -33,6 +33,7 @@ class Params(models.Model):
autonomy = models.IntegerField() autonomy = models.IntegerField()
default_relay = models.IntegerField() default_relay = models.IntegerField()
stand_minimum_time = models.IntegerField() stand_minimum_time = models.IntegerField()
comment = models.CharField(max_length=250)
class Relay(models.Model): class Relay(models.Model):

View File

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

View File

@ -1,5 +1,5 @@
from django.urls import path 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, \ #ListCreateKartsView, KartsDetailView, ListCreateRelaysView, RelaysDetailView, ListCreateRacesView, \
#RacesDetailView #RacesDetailView
@ -10,7 +10,7 @@ urlpatterns = [
path('karts/<int:pk>/', KartsDetailView.as_view(), name="drivers-detail"), path('karts/<int:pk>/', KartsDetailView.as_view(), name="drivers-detail"),
# path('karts/<int:pk>/', KartsDetailView.as_view(), name="karts-detail"), # path('karts/<int:pk>/', KartsDetailView.as_view(), name="karts-detail"),
# path('rules/', ListCreateRulesView.as_view(), name="rules-list-create"), # path('rules/', ListCreateRulesView.as_view(), name="rules-list-create"),
# path('rules/<int:pk>/', RulesDetailView.as_view(), name="rules-detail"), path('params/<int:pk>/', ParamsDetailView.as_view(), name="rules-detail"),
# path('relays/', ListCreateRelaysView.as_view(), name="relays-list-create"), # path('relays/', ListCreateRelaysView.as_view(), name="relays-list-create"),
# path('relays/<int:pk>/', RelaysDetailView.as_view(), name="relays-detail"), # path('relays/<int:pk>/', RelaysDetailView.as_view(), name="relays-detail"),
# path('races/', ListCreateRacesView.as_view(), name="races-list-create"), # path('races/', ListCreateRacesView.as_view(), name="races-list-create"),

View File

@ -9,7 +9,7 @@ from rest_framework.views import status
from .decorators import validate_request_driver_data from .decorators import validate_request_driver_data
from .models import Driver, Kart, Params, Relay from .models import Driver, Kart, Params, Relay
from .serializers import DriverSerializer, RelaySerializer, ParamSerializer, KartSerializer from .serializers import DriverSerializer, RelaySerializer, ParamSerializer, KartSerializer, KartSimpleSerializer
import logging import logging
logger = logging.getLogger(__name__) 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): class ListCreateDriversView(generics.ListCreateAPIView):
""" """
GET songs/ GET songs/
@ -145,20 +181,16 @@ class ListCreateKartsView(generics.ListCreateAPIView):
""" """
queryset = Kart.objects.all() queryset = Kart.objects.all()
serializer_class = KartSerializer serializer_class = KartSerializer
#permission_classes = (permissions.IsAuthenticated,)
#@validate_request_driver_data #@validate_request_driver_data
def post(self, request, *args, **kwargs): def post(self, request, *args, **kwargs):
logger.error('ListCreateKartsView => post') a_kart = Kart.objects.create(
a_song = Kart.objects.create( name=request.data["name"],
first_name=request.data["first_name"], autonomy=request.data["last_name"],
last_name=request.data["last_name"], comment=request.data["order"]
order=request.data["order"],
ref_time=request.data["ref_time"],
kart_id=request.data["kart_id"]
) )
return Response( return Response(
data=DriverSerializer(a_song).data, data=DriverSerializer(a_kart).data,
status=status.HTTP_201_CREATED status=status.HTTP_201_CREATED
) )