Waters Model & API Endpoint

I have created a new model for the waters belonging to a venue.

I have created an API endpoint for retrieving the waters data given a venue ID.
This commit is contained in:
Corban-Lee 2023-10-23 23:34:27 +01:00
parent 5fc0128c7c
commit ab17d8ded2
4 changed files with 84 additions and 1 deletions

View File

@ -0,0 +1,27 @@
# Generated by Django 4.1.5 on 2023-10-23 22:17
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('mainapp', '0002_venue_delete_member_delete_section_delete_team'),
]
operations = [
migrations.CreateModel(
name='Waters',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=100)),
('description', models.TextField(max_length=255)),
('pegs_min', models.IntegerField()),
('pegs_max', models.IntegerField()),
('water_type', models.CharField(choices=[('CW', 'Commercial Water'), ('NSW', 'Natural Still Water'), ('C', 'Canal'), ('R', 'River'), ('L', 'Loch')], max_length=50)),
('fish_type', models.CharField(choices=[('C', 'Coarse'), ('SC', 'Specimen Carp'), ('G', 'Game'), ('P', 'Predator')], max_length=50)),
('venue', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='mainapp.venue')),
],
),
]

View File

@ -41,6 +41,40 @@ class Venue(models.Model):
return self.name
class Waters(models.Model):
"""Represents the waters of a Venue"""
WATER_TYPES = (
("CW", "Commercial Water"),
("NSW", "Natural Still Water"),
("C", "Canal"),
("R", "River"),
("L", "Loch"),
)
FISH_TYPES = (
("C", "Coarse"),
("SC", "Specimen Carp"),
("G", "Game"),
("P", "Predator"),
)
venue = models.ForeignKey(Venue, on_delete=models.CASCADE)
name = models.CharField(max_length=100)
description = models.TextField(max_length=255)
pegs_min = models.IntegerField()
pegs_max = models.IntegerField()
water_type = models.CharField(choices=WATER_TYPES, max_length=50)
fish_type = models.CharField(choices=FISH_TYPES, max_length=50)
# water_map = models.ImageField()
def __str__(self):
return self.name
# class ReusableAutoField(models.PositiveIntegerField):
# """A django auto field that can reuse deleted primary keys."""

View File

@ -7,6 +7,7 @@ urlpatterns = [
path('scoreboard/', views.scoreboard, name='scoreboard'),
path('members/', views.teams, name='members'),
path('venues/', views.venues, name='venues'),
path('venues/get-waters/<int:venue_id>', views.get_venue_waters, name="get-venue-waters"),
# path('bulk-peg/', views.bulk_create_pegs, name='bulk-peg'),
path('get-angler-data/', views.get_angler_page_data, name='get-angler-data'),

View File

@ -10,7 +10,7 @@ from django.views import View
from django.views.decorators.http import require_GET, require_POST
from django.http import HttpRequest
from .models import Venue
from .models import Venue, Waters
# from .models import Team, Member, Section, SectionManager, ReusableAutoField, SectionValidator
@ -33,6 +33,27 @@ def venues(request):
return render(request, 'venues.html', context)
def get_venue_waters(request, venue_id: int):
try:
venue = Venue.objects.get(pk=venue_id)
except Venue.DoesNotExist:
return JsonResponse({"error": "Venue not found"}, status=404)
waters = Waters.objects.filter(venue=venue)
waters_data = [
{
"name": water.name,
"description": water.description,
"pegs_min": water.pegs_min,
"pegs_max": water.pegs_max,
"water_type": water.water_type,
"fish_type": water.fish_type
}
for water in waters
]
return JsonResponse({"waters", waters_data})
# def bulk_create_pegs(request):
# """Bulk create pegs"""