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:
parent
5fc0128c7c
commit
ab17d8ded2
27
src/mainapp/migrations/0003_waters.py
Normal file
27
src/mainapp/migrations/0003_waters.py
Normal 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')),
|
||||
],
|
||||
),
|
||||
]
|
@ -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."""
|
||||
|
||||
|
@ -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'),
|
||||
|
@ -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"""
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user