From f98d208a200c2b9ff7feff81f14e4cc0e9716981 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniele=20Vigan=C3=B2?= Date: Mon, 27 Dec 2021 16:22:58 +0100 Subject: [PATCH] Add REST API to roster --- dcc/dcc/urls.py | 2 ++ dcc/metadata/serializers.py | 22 ++++++++++++++++++++++ dcc/roster/serializers.py | 18 ++++++++++++++++++ dcc/roster/urls.py | 10 ++++++++++ dcc/roster/views.py | 28 ++++++++++++++++++++++++++-- 5 files changed, 78 insertions(+), 2 deletions(-) create mode 100644 dcc/metadata/serializers.py create mode 100644 dcc/roster/serializers.py create mode 100644 dcc/roster/urls.py diff --git a/dcc/dcc/urls.py b/dcc/dcc/urls.py index 6c74fa0..e762487 100644 --- a/dcc/dcc/urls.py +++ b/dcc/dcc/urls.py @@ -18,10 +18,12 @@ from django.conf.urls.static import static from django.contrib import admin from django.urls import include, path +from roster import urls as roster_urls from driver import urls as driver_urls urlpatterns = [ path('admin/', admin.site.urls), + path('roster/', include(roster_urls)), path('dcc/', include(driver_urls)), ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) diff --git a/dcc/metadata/serializers.py b/dcc/metadata/serializers.py new file mode 100644 index 0000000..d63fb3c --- /dev/null +++ b/dcc/metadata/serializers.py @@ -0,0 +1,22 @@ +from rest_framework import serializers +from metadata.models import Manufacturer, Company, Decoder + + +class ManufacturerSerializer(serializers.ModelSerializer): + class Meta: + model = Manufacturer + fields = "__all__" + + +class CompanySerializer(serializers.ModelSerializer): + class Meta: + model = Company + fields = "__all__" + + +class DecoderSerializer(serializers.ModelSerializer): + manufacturer = serializers.StringRelatedField() + + class Meta: + model = Decoder + fields = "__all__" diff --git a/dcc/roster/serializers.py b/dcc/roster/serializers.py new file mode 100644 index 0000000..74b9ee3 --- /dev/null +++ b/dcc/roster/serializers.py @@ -0,0 +1,18 @@ +from rest_framework import serializers +from roster.models import Cab +from metadata.serializers import ( + ManufacturerSerializer, CompanySerializer, DecoderSerializer) + + +class CabSerializer(serializers.ModelSerializer): + manufacturer = ManufacturerSerializer() + decoder = DecoderSerializer() + company = CompanySerializer() + # manufacturer = serializers.StringRelatedField() + # decoder = serializers.StringRelatedField() + # company = serializers.StringRelatedField() + + class Meta: + model = Cab + fields = "__all__" + read_only_fields = ("identifier", "creation_time", "updated_time") diff --git a/dcc/roster/urls.py b/dcc/roster/urls.py new file mode 100644 index 0000000..afca8f4 --- /dev/null +++ b/dcc/roster/urls.py @@ -0,0 +1,10 @@ +from django.urls import path +from roster.views import ( + RosterList, RosterGet, RosterAddress, RosterIdentifier) + +urlpatterns = [ + path('list', RosterList.as_view()), + path('get/', RosterGet.as_view()), + path('address/', RosterAddress.as_view()), + path('identifier/', RosterIdentifier.as_view()), +] diff --git a/dcc/roster/views.py b/dcc/roster/views.py index 91ea44a..98db4b7 100644 --- a/dcc/roster/views.py +++ b/dcc/roster/views.py @@ -1,3 +1,27 @@ -from django.shortcuts import render +from rest_framework.generics import ListCreateAPIView, RetrieveUpdateAPIView -# Create your views here. +from roster.models import Cab +from roster.serializers import CabSerializer + + +class RosterList(ListCreateAPIView): + queryset = Cab.objects.all() + serializer_class = CabSerializer + + +class RosterGet(RetrieveUpdateAPIView): + queryset = Cab.objects.all() + serializer_class = CabSerializer + lookup_field = 'uuid' + + +class RosterAddress(RetrieveUpdateAPIView): + queryset = Cab.objects.all() + serializer_class = CabSerializer + lookup_field = 'address' + + +class RosterIdentifier(RetrieveUpdateAPIView): + queryset = Cab.objects.all() + serializer_class = CabSerializer + lookup_field = 'identifier'