From a112ba38e92bb41475718fe3a06d32c261cd23d9 Mon Sep 17 00:00:00 2001 From: Corban-Lee <77944149+Corban-Lee@users.noreply.github.com> Date: Tue, 24 Oct 2023 22:27:11 +0100 Subject: [PATCH] View Venue & Details API Added a page for viewing venue details. Added an api function for retrieving venue details. --- src/mainapp/templates/venue_details.html | 45 ++++++++++++++++++++++++ src/mainapp/urls.py | 2 ++ src/mainapp/views.py | 29 +++++++++++++-- 3 files changed, 74 insertions(+), 2 deletions(-) create mode 100644 src/mainapp/templates/venue_details.html diff --git a/src/mainapp/templates/venue_details.html b/src/mainapp/templates/venue_details.html new file mode 100644 index 0000000..a0a6bd7 --- /dev/null +++ b/src/mainapp/templates/venue_details.html @@ -0,0 +1,45 @@ +{% extends "base.html" %} +{% load static %} + +{% block title %} + {{ venue.name }} | +{% endblock title %} + +{% block style %} +{% endblock style %} + +{% block header_buttons %} +{% endblock header_buttons %} + +{% block content %} +
+
+
+

+ {{ venue.name}} +

+
+

{{ venue.street_address }}

+

{{ venue.city }}, {{ venue.provence }}

+

{{ venue.postal_code }}

+
+
+

Lorem ipsum dolor sit amet consectetur adipisicing elit. Repudiandae eveniet aspernatur neque vero molestias nemo, voluptatum eum quo blanditiis. Voluptate provident earum placeat impedit cumque sapiente praesentium, alias omnis tempore!

+ +
+
+
+ Contact +
+
+

{{ venue.phone_number }}

+

{{ venue.email_address }}

+
+
+
+
+
+{% endblock content %} + +{% block scripts %} +{% endblock scripts %} diff --git a/src/mainapp/urls.py b/src/mainapp/urls.py index b3832d9..caace5e 100644 --- a/src/mainapp/urls.py +++ b/src/mainapp/urls.py @@ -8,6 +8,8 @@ urlpatterns = [ path('members/', views.teams, name='members'), path('venues/', views.venues, name='venues'), path('venues/get-waters/', views.get_venue_waters, name="get-venue-waters"), + path('venues/', views.venue_details, name="venue-details"), + path("venues/api/", views.get_venue_details, name="venue-details"), # path('bulk-peg/', views.bulk_create_pegs, name='bulk-peg'), path('get-angler-data/', views.get_angler_page_data, name='get-angler-data'), diff --git a/src/mainapp/views.py b/src/mainapp/views.py index 2cb9270..bada64e 100644 --- a/src/mainapp/views.py +++ b/src/mainapp/views.py @@ -1,5 +1,6 @@ """Views for the main app.""" +import json from functools import reduce from django.shortcuts import render, redirect @@ -8,7 +9,9 @@ from django.db.models import Q, Case, When, Value, IntegerField, Min from django.db.utils import IntegrityError from django.views import View from django.views.decorators.http import require_GET, require_POST -from django.http import HttpRequest +from django.http import HttpRequest, HttpResponseNotFound +from django.core import serializers +from django.forms.models import model_to_dict from .models import Venue, Waters # from .models import Team, Member, Section, SectionManager, ReusableAutoField, SectionValidator @@ -29,10 +32,32 @@ def teams(request): def venues(request): venues = Venue.objects.all() - context = {"venues": venues} + context = {"venues": venues, "venue_types": Venue.VENUE_TYPES} return render(request, 'venues.html', context) +def venue_details(request, venue_id): + + try: + venue = Venue.objects.get(id=venue_id) + except Venue.DoesNotExist: + return HttpResponseNotFound("

404 - Venue not found

") + + context = {"venue": venue} + + return render(request, 'venue_details.html', context) + +def get_venue_details(request, venue_id: int): + + try: + venue = Venue.objects.get(pk=venue_id) + except Venue.DoesNotExist: + return JsonResponse({"error": "Venue not found"}, status=404) + + json_venue = model_to_dict(venue) + + return JsonResponse({"data": json_venue}) + def get_venue_waters(request, venue_id: int): try: