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
|
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):
|
# class ReusableAutoField(models.PositiveIntegerField):
|
||||||
# """A django auto field that can reuse deleted primary keys."""
|
# """A django auto field that can reuse deleted primary keys."""
|
||||||
|
|
||||||
|
@ -7,6 +7,7 @@ urlpatterns = [
|
|||||||
path('scoreboard/', views.scoreboard, name='scoreboard'),
|
path('scoreboard/', views.scoreboard, name='scoreboard'),
|
||||||
path('members/', views.teams, name='members'),
|
path('members/', views.teams, name='members'),
|
||||||
path('venues/', views.venues, name='venues'),
|
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('bulk-peg/', views.bulk_create_pegs, name='bulk-peg'),
|
||||||
path('get-angler-data/', views.get_angler_page_data, name='get-angler-data'),
|
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.views.decorators.http import require_GET, require_POST
|
||||||
from django.http import HttpRequest
|
from django.http import HttpRequest
|
||||||
|
|
||||||
from .models import Venue
|
from .models import Venue, Waters
|
||||||
# from .models import Team, Member, Section, SectionManager, ReusableAutoField, SectionValidator
|
# from .models import Team, Member, Section, SectionManager, ReusableAutoField, SectionValidator
|
||||||
|
|
||||||
|
|
||||||
@ -33,6 +33,27 @@ def venues(request):
|
|||||||
|
|
||||||
return render(request, 'venues.html', context)
|
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):
|
# def bulk_create_pegs(request):
|
||||||
# """Bulk create pegs"""
|
# """Bulk create pegs"""
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user