diff --git a/dcc/consist/models.py b/dcc/consist/models.py index 4673910..4db824b 100644 --- a/dcc/consist/models.py +++ b/dcc/consist/models.py @@ -25,7 +25,11 @@ class Consist(models.Model): class ConsistItem(models.Model): - consist = models.ForeignKey(Consist, on_delete=models.CASCADE) + consist = models.ForeignKey( + Consist, + on_delete=models.CASCADE, + related_name="consist_item" + ) rolling_stock = models.ForeignKey(RollingStock, on_delete=models.CASCADE) order = models.PositiveIntegerField(default=0, blank=False, null=False) diff --git a/dcc/consist/serializers.py b/dcc/consist/serializers.py new file mode 100644 index 0000000..947b487 --- /dev/null +++ b/dcc/consist/serializers.py @@ -0,0 +1,24 @@ +from rest_framework import serializers +from consist.models import Consist, ConsistItem + +from metadata.serializers import CompanySerializer, TagSerializer + +# from roster.serializers import RollingStockSerializer + + +class ConsistItemSerializer(serializers.ModelSerializer): + # rolling_stock = RollingStockSerializer() + + class Meta: + model = ConsistItem + fields = ("order", "rolling_stock") + + +class ConsistSerializer(serializers.ModelSerializer): + company = CompanySerializer() + consist_item = ConsistItemSerializer(many=True) + tags = TagSerializer(many=True) + + class Meta: + model = Consist + fields = "__all__" diff --git a/dcc/consist/urls.py b/dcc/consist/urls.py new file mode 100644 index 0000000..af648ca --- /dev/null +++ b/dcc/consist/urls.py @@ -0,0 +1,6 @@ +from django.urls import path +from consist.views import ConsistList + +urlpatterns = [ + path("list", ConsistList.as_view()), +] diff --git a/dcc/consist/views.py b/dcc/consist/views.py index 91ea44a..e3fdf06 100644 --- a/dcc/consist/views.py +++ b/dcc/consist/views.py @@ -1,3 +1,21 @@ -from django.shortcuts import render +from rest_framework.generics import ListAPIView, RetrieveAPIView -# Create your views here. +from consist.models import Consist +from consist.serializers import ConsistSerializer + + +class ConsistList(ListAPIView): + queryset = Consist.objects.all() + serializer_class = ConsistSerializer + + +class ConsistGet(RetrieveAPIView): + queryset = Consist.objects.all() + serializer_class = ConsistSerializer + lookup_field = "uuid" + + +# class RosterIdentifier(RetrieveAPIView): +# queryset = RollingStock.objects.all() +# serializer_class = RollingStockSerializer +# lookup_field = "identifier" diff --git a/dcc/dcc/urls.py b/dcc/dcc/urls.py index 69ba47b..34dce49 100644 --- a/dcc/dcc/urls.py +++ b/dcc/dcc/urls.py @@ -18,6 +18,7 @@ from django.conf.urls.static import static from django.contrib import admin from django.urls import include, path +from consist import urls as consist_urls from roster import urls as roster_urls from driver import urls as driver_urls @@ -26,6 +27,7 @@ admin.site.site_header = "Trains assets manager" urlpatterns = [ path("ht/", include("health_check.urls")), path("admin/", admin.site.urls), + path("api/v1/consist/", include(consist_urls)), path("api/v1/roster/", include(roster_urls)), path("api/v1/dcc/", include(driver_urls)), ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)