diff --git a/db.sqlite3 b/db.sqlite3 index d94076c..6745bff 100644 Binary files a/db.sqlite3 and b/db.sqlite3 differ diff --git a/requirements.txt b/requirements.txt index bd9e27d..ad2e21b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -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 diff --git a/timelaps/models.py b/timelaps/models.py index 8fa454a..0c1766f 100644 --- a/timelaps/models.py +++ b/timelaps/models.py @@ -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) diff --git a/timelaps/serializers.py b/timelaps/serializers.py index 9dcff12..1435494 100644 --- a/timelaps/serializers.py +++ b/timelaps/serializers.py @@ -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 diff --git a/timelaps/urls.py b/timelaps/urls.py index 1ead2df..9dec02f 100644 --- a/timelaps/urls.py +++ b/timelaps/urls.py @@ -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//', DriversDetailView.as_view(), name="drivers-detail"), path('karts/', ListCreateKartsView.as_view(), name="karts-list-create"), path('karts//', KartsDetailView.as_view(), name="drivers-detail"), - # path('karts//', KartsDetailView.as_view(), name="karts-detail"), - # path('rules/', ListCreateRulesView.as_view(), name="rules-list-create"), - # path('rules//', RulesDetailView.as_view(), name="rules-detail"), - # path('relays/', ListCreateRelaysView.as_view(), name="relays-list-create"), - # path('relays//', RelaysDetailView.as_view(), name="relays-detail"), - # path('races/', ListCreateRacesView.as_view(), name="races-list-create"), - # path('races//', RacesDetailView.as_view(), name="races-detail"), + # path('karts//', KartsDetailView.as_view(), name="karts-detail"), + # path('rules/', ListCreateRulesView.as_view(), name="rules-list-create"), + path('params//', ParamsDetailView.as_view(), name="rules-detail"), + # path('relays/', ListCreateRelaysView.as_view(), name="relays-list-create"), + # path('relays//', RelaysDetailView.as_view(), name="relays-detail"), + # path('races/', ListCreateRacesView.as_view(), name="races-list-create"), + # path('races//', RacesDetailView.as_view(), name="races-detail"), ] diff --git a/timelaps/views.py b/timelaps/views.py index 7bbcc8d..da0d625 100644 --- a/timelaps/views.py +++ b/timelaps/views.py @@ -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 )