From 0aa53a808050d47ef9a5da2e52ac3c5af90cf25c Mon Sep 17 00:00:00 2001 From: Corban-Lee Jones Date: Wed, 6 Nov 2024 23:13:55 +0000 Subject: [PATCH] API for venue views --- apps/api/serializers.py | 53 +++++++++++++++++++++-------------------- apps/api/urls.py | 21 +++++++++------- apps/api/views.py | 22 +++++++++-------- apps/home/urls.py | 2 ++ core/settings.py | 5 ++-- core/urls.py | 6 ++--- 6 files changed, 60 insertions(+), 49 deletions(-) diff --git a/apps/api/serializers.py b/apps/api/serializers.py index 6d28f28..c985310 100644 --- a/apps/api/serializers.py +++ b/apps/api/serializers.py @@ -1,27 +1,28 @@ -from rest_framework import serializers -# from mainapp.models import Venue +"""Serializers for the API app.""" + +from rest_framework import serializers + +from apps.home import models + + +class VenueAddressSerializer(serializers.ModelSerializer): + class Meta: + model = models.VenueAddress + exclude = [] + + +class VenueContactsSerializer(serializers.ModelSerializer): + class Meta: + model = models.VenueContacts + exclude = [] + + +class VenueSerializer(serializers.ModelSerializer): + + address = VenueAddressSerializer() + contacts = VenueContactsSerializer() + + class Meta: + model = models.Venue + exclude = [] -# class VenueSerializer(serializers.ModelSerializer): -# class Meta: -# model = Venue -# fields = ( -# "pk", -# "name", -# "description", -# "extra_notes", -# "venue_type", -# "phone_number", -# "email_address", -# "website_url", -# "street_address", -# "city", -# "provence", -# "postal_code", -# "country", -# "latitude", -# "longitude", -# "twitter_url", -# "instagram_url", -# "facebook_url", -# "active", -# ) \ No newline at end of file diff --git a/apps/api/urls.py b/apps/api/urls.py index 3646649..b335d9e 100644 --- a/apps/api/urls.py +++ b/apps/api/urls.py @@ -1,9 +1,14 @@ -from django.urls import path, include -# from .views import VenueListView, VenueDetailView +"""URLs for the API app.""" -# urlpatterns = [ -# path('venue/', include([ -# path("", VenueListView.as_view()), -# path("/", VenueDetailView.as_view()) -# ])) -# ] \ No newline at end of file +from django.urls import path, include + +from . import views + +app_name = "api" + +urlpatterns = [ + path("venues/", include([ + path("", views.VenueListView.as_view(), name="venues"), + path("/", views.VenueDetailsView.as_view(), name="venue-detail") + ])) +] diff --git a/apps/api/views.py b/apps/api/views.py index cde80af..8d9b315 100644 --- a/apps/api/views.py +++ b/apps/api/views.py @@ -1,14 +1,16 @@ +"""Views for the API app.""" + from django.shortcuts import render from rest_framework import generics -# from .serializers import VenueSerializer -# from mainapp.models import Venue -# Create your views here. +from .serializers import VenueSerializer +from apps.home import models -# class VenueListView(generics.ListCreateAPIView): -# serializer_class = VenueSerializer -# queryset = Venue.objects.all().order_by("name") - -# class VenueDetailView(generics.RetrieveUpdateDestroyAPIView): -# serializer_class = VenueSerializer -# queryset = Venue.objects.all().order_by("name") \ No newline at end of file +class VenueListView(generics.ListCreateAPIView): + serializer_class = VenueSerializer + queryset = models.Venue.objects.all().order_by("id") + + +class VenueDetailsView(generics.RetrieveUpdateDestroyAPIView): + serializer_class = VenueSerializer + queryset = models.Venue.objects.all().order_by("id") diff --git a/apps/home/urls.py b/apps/home/urls.py index 331822d..1f811b0 100644 --- a/apps/home/urls.py +++ b/apps/home/urls.py @@ -4,6 +4,8 @@ from django.urls import path from . import views +app_name = "home" + urlpatterns = [ path("", views.IndexView.as_view(), name="index"), path("venues", views.VenueWatersView.as_view(), name="venues-waters"), diff --git a/core/settings.py b/core/settings.py index 68d4083..3ff5d8b 100644 --- a/core/settings.py +++ b/core/settings.py @@ -196,11 +196,12 @@ REST_FRAMEWORK = { "user": "10000/hour" }, "DEFAULT_RENDERER_CLASSES": [ - "apps.api.renderers.FixedJSONRenderer", + "rest_framework.renderers.JSONRenderer", # "rest_framework.renderers.AdminRenderer", "rest_framework.renderers.BrowsableAPIRenderer" ], - "EXCEPTION_HANDLER": "apps.api.exceptions.conflict_exception_handler" + "DEFAULT_PAGINATION_CLASS": "rest_framework.pagination.LimitOffsetPagination", + "PAGE_SIZE": 100 } diff --git a/core/urls.py b/core/urls.py index 0f3251d..273caad 100644 --- a/core/urls.py +++ b/core/urls.py @@ -17,7 +17,7 @@ from django.contrib import admin from django.urls import path, include urlpatterns = [ - path('admin/', admin.site.urls), - # path('api/', include('api.urls')), - path('', include('apps.home.urls')), + path("admin/", admin.site.urls), + path("api/", include("apps.api.urls", namespace="api")), + path("", include("apps.home.urls", namespace="home")), ]