First commit of the V2.
New base, new info.
This commit is contained in:
@ -1,14 +1,8 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.contrib import admin
|
||||
from .models import *
|
||||
from .models import Kart, Params, Relay, Driver
|
||||
|
||||
# Register your models here.
|
||||
|
||||
admin.site.register(Driver)
|
||||
admin.site.register(Race)
|
||||
admin.site.register(Relay)
|
||||
admin.site.register(Rules)
|
||||
admin.site.register(Team)
|
||||
admin.site.register(EngagedPilot)
|
||||
admin.site.register(Params)
|
||||
admin.site.register(Kart)
|
||||
|
@ -1,6 +1,3 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.apps import AppConfig
|
||||
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Generated by Django 2.1.5 on 2019-01-15 23:31
|
||||
# Generated by Django 2.0.3 on 2019-04-15 20:12
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
@ -18,27 +18,27 @@ class Migration(migrations.Migration):
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('first_name', models.CharField(blank=True, default=None, max_length=30, null=True)),
|
||||
('last_name', models.CharField(blank=True, default=None, max_length=30, null=True)),
|
||||
('ref_time', models.IntegerField()),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='EngagedPilot',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('order', models.IntegerField(blank=True, default=None, null=True)),
|
||||
('pilot', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='pilot', to='timelaps.Driver')),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Race',
|
||||
name='Kart',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(blank=True, default=None, max_length=30, null=True)),
|
||||
('start_date', models.DateTimeField(blank=True, default=None, null=True)),
|
||||
('end_date', models.DateTimeField(blank=True, default=None, null=True)),
|
||||
('duration', models.IntegerField()),
|
||||
('autonomy', models.IntegerField()),
|
||||
('comment', models.CharField(blank=True, default=None, max_length=256, null=True)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Params',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('autonomy', models.IntegerField()),
|
||||
('default_relay', models.IntegerField()),
|
||||
('stand_minimum_time', models.IntegerField()),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Relay',
|
||||
fields=[
|
||||
@ -47,42 +47,14 @@ class Migration(migrations.Migration):
|
||||
('relay_end', models.DateTimeField(blank=True, default=None, null=True)),
|
||||
('has_refuel', models.BooleanField(default=False)),
|
||||
('pilot_chrono', models.IntegerField(blank=True, default=None, null=True)),
|
||||
('relay_autonomy', models.IntegerField(blank=True, default=None, null=True)),
|
||||
('comment', models.CharField(blank=True, default=None, max_length=256, null=True)),
|
||||
('team_pilot', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='relays', to='timelaps.EngagedPilot')),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Rules',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('min_stand_duration', models.IntegerField(blank=True, default=None, null=True)),
|
||||
('max_autonomy_dry', models.IntegerField()),
|
||||
('max_autonomy_wet', models.IntegerField()),
|
||||
('max_driving_duration', models.IntegerField(blank=True, default=None, null=True)),
|
||||
('relay_default_duration', models.IntegerField(blank=True, default=None, null=True)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Team',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(blank=True, default=None, max_length=30, null=True)),
|
||||
('comment', models.CharField(blank=True, default=None, max_length=256, null=True)),
|
||||
('team_pilot', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='driver_running', to='timelaps.Driver')),
|
||||
],
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='race',
|
||||
name='fk_rules',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='timelaps.Rules'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='engagedpilot',
|
||||
name='race',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='race', to='timelaps.Race'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='engagedpilot',
|
||||
name='team',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='team', to='timelaps.Team'),
|
||||
model_name='driver',
|
||||
name='kart_id',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='timelaps.Kart'),
|
||||
),
|
||||
]
|
||||
|
@ -1,73 +1,55 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models
|
||||
|
||||
# Create your models here.
|
||||
|
||||
class Team(models.Model):
|
||||
|
||||
class Kart(models.Model):
|
||||
# Name of the team
|
||||
name = models.CharField(max_length=30, default=None, blank=True, null=True)
|
||||
autonomy = models.IntegerField()
|
||||
comment = models.CharField(max_length=256, default=None, blank=True, null=True)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
|
||||
class Driver(models.Model):
|
||||
# Name of the pilot
|
||||
kart = models.ForeignKey(Kart, related_name='drivers', on_delete=models.CASCADE)
|
||||
short_name = models.CharField(max_length=10, default=None, blank=True, null=True)
|
||||
first_name = models.CharField(max_length=30, default=None, blank=True, null=True)
|
||||
last_name = models.CharField(max_length=30, default=None, blank=True, null=True)
|
||||
last_name = models.CharField(max_length=30, default=None, blank=True, null=True)
|
||||
order = models.IntegerField()
|
||||
ref_time = models.IntegerField()
|
||||
|
||||
class Meta:
|
||||
ordering = ['order']
|
||||
|
||||
def __str__(self):
|
||||
return self.last_name
|
||||
|
||||
class Rules(models.Model):
|
||||
#Minimum time in the pitlane
|
||||
min_stand_duration = models.IntegerField(default=None, blank=True, null=True)
|
||||
#Maximum autonomy of the kart in dry condition (In seconds)
|
||||
max_autonomy_dry = models.IntegerField()
|
||||
#Maximum autonomy of the kart in wet condition (In seconds)
|
||||
max_autonomy_wet = models.IntegerField()
|
||||
#Maximum driving time by driver(In seconds)
|
||||
max_driving_duration = models.IntegerField(default=None, blank=True, null=True)
|
||||
#Start and end date of the race
|
||||
relay_default_duration = models.IntegerField(default=None, blank=True, null=True)
|
||||
|
||||
class Race(models.Model):
|
||||
# Name of the race
|
||||
name = models.CharField(max_length=30, default=None, blank=True, null=True)
|
||||
#Start and end date of the race
|
||||
start_date = models.DateTimeField(default=None, blank=True, null=True)
|
||||
end_date = models.DateTimeField(default=None, blank=True, null=True)
|
||||
#Lenth of th race in seconds
|
||||
duration = models.IntegerField()
|
||||
#Link to the rules of the race
|
||||
fk_rules = models.ForeignKey(Rules, on_delete=models.CASCADE)
|
||||
#Comment the race
|
||||
comment = models.CharField(max_length=256, default=None, blank=True, null=True)
|
||||
return '%d: %s' % (self.first_name, self.last_name)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
class EngagedPilot(models.Model):
|
||||
# Foreign keys to the team pilot and race
|
||||
team = models.ForeignKey(Team, related_name='team', on_delete=models.CASCADE)
|
||||
pilot = models.ForeignKey(Driver, related_name='pilot', on_delete=models.CASCADE)
|
||||
race = models.ForeignKey(Race, related_name='engagedpilots', on_delete=models.CASCADE)
|
||||
order = models.IntegerField(default=None, blank=True, null=True)
|
||||
class Params(models.Model):
|
||||
# Name of the pilot
|
||||
autonomy = models.IntegerField()
|
||||
default_relay = models.IntegerField()
|
||||
stand_minimum_time = models.IntegerField()
|
||||
|
||||
|
||||
class Relay(models.Model):
|
||||
# Name of the team
|
||||
team_pilot = models.ForeignKey(EngagedPilot, related_name='relays', on_delete=models.CASCADE)
|
||||
# Fk driver
|
||||
driver = models.ForeignKey(Driver, on_delete=models.CASCADE)
|
||||
# Fk kart
|
||||
kart = models.ForeignKey(Kart, on_delete=models.CASCADE)
|
||||
#Starting timestamp for the relay
|
||||
relay_start = models.DateTimeField()
|
||||
#ending timestamp for the relay
|
||||
relay_end = models.DateTimeField(default=None, blank=True, null=True)
|
||||
#Does the pilot did refuel
|
||||
#Does the previous pilot refuel
|
||||
has_refuel = models.BooleanField(default=False)
|
||||
#Average chrono for the pulot on this relay
|
||||
pilot_chrono = models.IntegerField(default=None, blank=True, null=True)
|
||||
driver_chrono = models.IntegerField(default=None, blank=True, null=True)
|
||||
#ending timestamp for the relay
|
||||
relay_autonomy = models.IntegerField(default=None, blank=True, null=True)
|
||||
#comment the relay
|
||||
comment = models.CharField(max_length=256, default=None, blank=True, null=True)
|
||||
|
||||
|
@ -1,45 +1,80 @@
|
||||
from rest_framework import serializers
|
||||
from .models import *
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
from .models import Driver, Kart, Params, Relay
|
||||
|
||||
|
||||
class DriverSerializer(serializers.ModelSerializer):
|
||||
|
||||
class Meta:
|
||||
model = Driver
|
||||
fields = ('first_name','last_name')
|
||||
fields = ('id', 'first_name', 'last_name', 'order', 'ref_time')
|
||||
|
||||
def update(self, instance, validated_data):
|
||||
instance.first_name = validated_data.get("first_name", instance.first_name)
|
||||
instance.last_name = validated_data.get("last_name", instance.last_name)
|
||||
instance.order = validated_data.get("order", instance.order)
|
||||
instance.ref_time = validated_data.get("ref_time", instance.ref_time)
|
||||
instance.save()
|
||||
return instance
|
||||
|
||||
def create(self, validated_data):
|
||||
return Driver.objects.create(**validated_data)
|
||||
|
||||
|
||||
class KartSerializer(serializers.ModelSerializer):
|
||||
|
||||
drivers = DriverSerializer(many=True, read_only=True)
|
||||
|
||||
class RaceSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Race
|
||||
fields = ('name','start_date','end_date','duration', 'comment','fk_rules')
|
||||
model = Kart
|
||||
fields = ('id', 'name', 'autonomy', 'drivers')
|
||||
|
||||
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
|
||||
fields = ('relay_start','relay_end','has_refuel','pilot_chrono','pilot_chrono', 'comment','team_pilot')
|
||||
fields = ('id', 'relay_start', 'relay_end', 'has_refuel', 'driver_chrono', 'relay_autonomy', 'comment',
|
||||
'kart_id', 'driver_id')
|
||||
|
||||
class RulesSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Rules
|
||||
fields = ('min_stand_duration', 'max_autonomy_dry', 'max_autonomy_wet', 'max_driving_duration', 'relay_default_duration')
|
||||
def update(self, instance, validated_data):
|
||||
instance.relay_start = validated_data.get("relay_start", instance.relay_start)
|
||||
instance.relay_end = validated_data.get("relay_end", instance.relay_end)
|
||||
instance.has_refuel = validated_data.get("has_refuel", instance.has_refuel)
|
||||
instance.driver_chrono = validated_data.get("driver_chrono", instance.driver_chrono)
|
||||
instance.relay_autonomy = validated_data.get("relay_autonomy", instance.relay_autonomy)
|
||||
instance.comment = validated_data.get("comment", instance.comment)
|
||||
instance.kart_id = validated_data.get("kart_id", instance.kart_id)
|
||||
instance.driver_id = validated_data.get("driver_id", instance.driver_id)
|
||||
instance.save()
|
||||
return instance
|
||||
|
||||
class TeamSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Team
|
||||
fields = ('name', 'comment')
|
||||
def create(self, validated_data):
|
||||
return Relay.objects.create(**validated_data)
|
||||
|
||||
class EngagedPilotSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = EngagedPilot
|
||||
fields = ('order','team','pilot','race')
|
||||
|
||||
class EngagedPilotsSerializer(serializers.ModelSerializer):
|
||||
relays = RelaySerializer(many=True)
|
||||
class ParamSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = EngagedPilot
|
||||
fields = ('order','team','pilot','race', 'relays')
|
||||
model = Params
|
||||
fields = ('id', 'default_relay', 'autonomy', 'stand_minimum_time')
|
||||
|
||||
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.save()
|
||||
return instance
|
||||
|
||||
def create(self, validated_data):
|
||||
return Params.objects.create(**validated_data)
|
||||
|
||||
class ListRelaysByRaceAndTeamSerializer(serializers.ModelSerializer):
|
||||
engagedpilots = EngagedPilotsSerializer(many=True)
|
||||
class Meta:
|
||||
model = Race
|
||||
fields = ('name','start_date','end_date','duration', 'comment','fk_rules', 'engagedpilots')
|
||||
|
@ -1,48 +1,3 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
||||
from django.urls import reverse
|
||||
from rest_framework.test import APITestCase, APIClient
|
||||
from rest_framework.views import status
|
||||
from .models import *
|
||||
from .serializers import DriverSerializer
|
||||
|
||||
"""
|
||||
# tests for views
|
||||
class BaseViewTest(APITestCase):
|
||||
client = APIClient()
|
||||
|
||||
@staticmethod
|
||||
def create_song(title="", artist=""):
|
||||
if title != "" and artist != "":
|
||||
Songs.objects.create(title=title, artist=artist)
|
||||
|
||||
def setUp(self):
|
||||
# add test data
|
||||
self.create_song("like glue", "sean paul")
|
||||
self.create_song("simple song", "konshens")
|
||||
self.create_song("love is wicked", "brick and lace")
|
||||
self.create_song("jam rock", "damien marley")
|
||||
|
||||
|
||||
class GetAllSongsTest(BaseViewTest):
|
||||
|
||||
def test_get_all_songs(self):
|
||||
|
||||
#This test ensures that all songs added in the setUp method
|
||||
#exist when we make a GET request to the songs/ endpoint
|
||||
|
||||
# hit the API endpoint
|
||||
response = self.client.get(
|
||||
reverse("songs-all", kwargs={"version": "v1"})
|
||||
)
|
||||
# fetch the data from db
|
||||
expected = Songs.objects.all()
|
||||
serialized = SongsSerializer(expected, many=True)
|
||||
self.assertEqual(response.data, serialized.data)
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
|
||||
"""
|
||||
|
@ -1,13 +1,18 @@
|
||||
from django.urls import path
|
||||
from django.conf.urls import url
|
||||
from .views import *
|
||||
from .views import ListCreateDriversView, DriversDetailView, KartsDetailView, ListCreateKartsView#, ListCreateRulesView, RulesDetailView, \
|
||||
#ListCreateKartsView, KartsDetailView, ListCreateRelaysView, RelaysDetailView, ListCreateRacesView, \
|
||||
#RacesDetailView
|
||||
|
||||
urlpatterns = [
|
||||
path('drivers/', ListDriverView.as_view()),
|
||||
path('races/', ListRaceView.as_view()),
|
||||
path('relays/', ListRelayView.as_view()),
|
||||
path('rules/', ListRulesView.as_view()),
|
||||
path('teams/', ListTeamView.as_view()),
|
||||
path('engagedpilots/', ListEngagedPilotView.as_view()),
|
||||
url('race/(?P<raceid>\d+)', ListRelaysByRaceAndTeamView.as_view()),
|
||||
]
|
||||
path('drivers/', ListCreateDriversView.as_view(), name="drivers-list-create"),
|
||||
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"),
|
||||
]
|
||||
|
@ -1,63 +1,164 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.shortcuts import render
|
||||
from rest_framework import generics
|
||||
from .models import *
|
||||
from .serializers import *
|
||||
|
||||
|
||||
# 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
|
||||
|
||||
class ListDriverView(generics.ListAPIView):
|
||||
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,)
|
||||
|
||||
class ListRaceView(generics.ListAPIView):
|
||||
queryset = Race.objects.all()
|
||||
serializer_class = RaceSerializer
|
||||
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
|
||||
)
|
||||
|
||||
class ListRelayView(generics.ListAPIView):
|
||||
queryset = Relay.objects.all()
|
||||
serializer_class = RelaySerializer
|
||||
|
||||
class ListRulesView(generics.ListAPIView):
|
||||
queryset = Rules.objects.all()
|
||||
serializer_class = RulesSerializer
|
||||
#@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
|
||||
)
|
||||
|
||||
class ListTeamView(generics.ListAPIView):
|
||||
queryset = Team.objects.all()
|
||||
serializer_class = TeamSerializer
|
||||
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 ListEngagedPilotView(generics.ListAPIView):
|
||||
queryset = EngagedPilot.objects.all()
|
||||
serializer_class = EngagedPilotSerializer
|
||||
|
||||
class ListRelaysByRaceAndTeamView(generics.ListAPIView):
|
||||
serializer_class = ListRelaysByRaceAndTeamSerializer
|
||||
def get_queryset(self):
|
||||
raceid = self.kwargs['raceid']
|
||||
return Race.objects.filter(id=raceid)
|
||||
class KartsDetailView(generics.ListAPIView):
|
||||
"""
|
||||
Provides a get method handler.
|
||||
"""
|
||||
queryset = Kart.objects.all()
|
||||
serializer_class = KartSerializer
|
||||
#permission_classes = (permissions.IsAuthenticated,)
|
||||
|
||||
"""
|
||||
def get_queryset(self):
|
||||
raceid = self.kwargs['raceid']
|
||||
teamid = self.kwargs['teamid']
|
||||
return Relay.objects.filter(team_pilot__team=teamid).filter(team_pilot__race=raceid)
|
||||
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
|
||||
)
|
||||
|
||||
class ListRelaysByRaceAndTeamView(generics.ListAPIView):
|
||||
#Getting the params from the url with the "self.kwargs.get"
|
||||
#and filter with thoses in the relays relation
|
||||
serializer_class = RelayPilotSerializer
|
||||
lookup_url_raceid = "raceid"
|
||||
lookup_url_teamid = "teamid"
|
||||
#@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
|
||||
)
|
||||
|
||||
def get_queryset(self):
|
||||
raceid = self.kwargs.get(self.lookup_url_raceid)
|
||||
teamid = self.kwargs.get(self.lookup_url_teamid)
|
||||
relays = Relay.objects.filter(team_pilot__team=teamid).filter(team_pilot__race=raceid)
|
||||
return relays
|
||||
"""
|
Reference in New Issue
Block a user