diff --git a/src/mainapp/migrations/0003_waters.py b/src/mainapp/migrations/0003_waters.py new file mode 100644 index 0000000..712493f --- /dev/null +++ b/src/mainapp/migrations/0003_waters.py @@ -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')), + ], + ), + ] diff --git a/src/mainapp/models.py b/src/mainapp/models.py index a604a83..61529f5 100644 --- a/src/mainapp/models.py +++ b/src/mainapp/models.py @@ -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.""" diff --git a/src/mainapp/urls.py b/src/mainapp/urls.py index fa49eeb..b3832d9 100644 --- a/src/mainapp/urls.py +++ b/src/mainapp/urls.py @@ -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/', 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'), diff --git a/src/mainapp/views.py b/src/mainapp/views.py index d331692..2cb9270 100644 --- a/src/mainapp/views.py +++ b/src/mainapp/views.py @@ -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"""