diff --git a/.gitignore b/.gitignore index e797b49..3d47c74 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,4 @@ music/migrations/__pycache__/ api/__pycache__/ music/tests/__pycache__/ music/views/__pycache__/ -/db.sqlite3 +db.sqlite3 diff --git a/timelaps/models.py b/timelaps/models.py index 5f1b96f..371a67a 100644 --- a/timelaps/models.py +++ b/timelaps/models.py @@ -54,3 +54,5 @@ class Relay(models.Model): # comment the relay comment = models.CharField(max_length=256, default=None, blank=True, null=True) + class Meta: + ordering = ['relay_start'] diff --git a/timelaps/serializers.py b/timelaps/serializers.py index 37fc0d6..cfdd24e 100644 --- a/timelaps/serializers.py +++ b/timelaps/serializers.py @@ -4,7 +4,6 @@ from .models import Driver, Kart, Params, Relay class DriverSerializer(serializers.ModelSerializer): - class Meta: model = Driver fields = ('id', 'short_name', 'first_name', 'last_name', 'order', 'ref_time') @@ -23,7 +22,6 @@ class DriverSerializer(serializers.ModelSerializer): class KartSerializer(serializers.ModelSerializer): - drivers = DriverSerializer(many=True, read_only=True) class Meta: @@ -42,7 +40,6 @@ class KartSerializer(serializers.ModelSerializer): class KartSimpleSerializer(serializers.ModelSerializer): - class Meta: model = Kart fields = ('id', 'name', 'autonomy') @@ -59,10 +56,13 @@ class KartSimpleSerializer(serializers.ModelSerializer): class RelaySerializer(serializers.ModelSerializer): + + drivers = DriverSerializer(many=True, read_only=True) + class Meta: model = Relay - fields = ('id', 'relay_start', 'relay_end', 'has_refuel', 'driver_chrono', 'relay_autonomy', 'comment', - 'kart_id', 'driver_id') + fields = '__all__' + depth = 1 def update(self, instance, validated_data): instance.relay_start = validated_data.get("relay_start", instance.relay_start) @@ -95,4 +95,3 @@ class ParamSerializer(serializers.ModelSerializer): def create(self, validated_data): return Params.objects.create(**validated_data) - diff --git a/timelaps/urls.py b/timelaps/urls.py index 4d0a86e..5046a44 100644 --- a/timelaps/urls.py +++ b/timelaps/urls.py @@ -1,6 +1,6 @@ from django.urls import path from .views import ListCreateDriversView, DriversDetailView, KartsDetailView, ListCreateKartsView, \ - ParamsDetailView, ListCreateRelaysView, RelaysDetailView + ParamsDetailView, ListCreateRelaysView, RelaysDetailView, RelaysByKartDetailView # , ListCreateRulesView, RulesDetailView, \ # ListCreateKartsView, KartsDetailView, ListCreateRelaysView, RelaysDetailView, ListCreateRacesView, \ # RacesDetailView @@ -14,7 +14,7 @@ urlpatterns = [ # 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('relaysbykart//', RelaysDetailView.as_view(), name="relays-detail"), + path('relaysbykart//', RelaysByKartDetailView.as_view(), name="relays-detail"), 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 4825633..5e91459 100644 --- a/timelaps/views.py +++ b/timelaps/views.py @@ -264,3 +264,23 @@ class RelaysDetailView(generics.ListAPIView): }, status=status.HTTP_404_NOT_FOUND ) + + +class RelaysByKartDetailView(generics.ListAPIView): + """ + Provides a get method handler. + """ + serializer_class = RelaySerializer + + def get_queryset(self): + try: + kart = self.kwargs['kart'] + a_relay = Relay.objects.filter(kart=kart) + return a_relay + except Relay.DoesNotExist: + return Response( + data={ + "message": "Relay with id: {} does not exist".format(self.kwargs["kart"]) + }, + status=status.HTTP_404_NOT_FOUND + )