diff --git a/apps/home/admin.py b/apps/home/admin.py index 813b994..04e0fea 100644 --- a/apps/home/admin.py +++ b/apps/home/admin.py @@ -47,59 +47,3 @@ class Sponsor(admin.ModelAdmin): pass @admin.register(models.LeagueResult) class LeagueResult(admin.ModelAdmin): pass - - -# from .models import Venue, Waters -# # from .models import Member, Team, Section - - -# @admin.register(Venue) -# class VenueAdmin(admin.ModelAdmin): -# """Admin model for the Venue model.""" - -# @admin.register(Waters) -# class WatersAdmin(admin.ModelAdmin): -# """Admin model for the Waters model""" - - - - - - - - - -# @admin.register(Peg) -# class PegAdmin(admin.ModelAdmin): -# """Admin model for the Peg model.""" - -# change_list_template = "entities/bulk_pegging.html" -# readonly_fields = ("peg_number",) -# list_display = ("peg_number",) -# search_fields = ("peg_number",) - - -# @admin.register(Member) -# class MemberAdmin(admin.ModelAdmin): -# """Admin model for the Member model.""" - -# list_display = ("first_name", "last_name", "team") -# search_fields = ("first_name", "last_name", "team") -# list_filter = ("team",) - - -# @admin.register(Team) -# class TeamAdmin(admin.ModelAdmin): -# """Admin model for the Team model.""" - -# # readonly_fields = ("id", "number",) -# list_display = ("id", "number",) -# search_fields = ("number",) - - -# @admin.register(Section) -# class SectionAdmin(admin.ModelAdmin): -# """Admin model for the Section model.""" - -# list_display = ("id", "character",) -# search_fields = ("character",) diff --git a/apps/home/filters.py b/apps/home/filters.py deleted file mode 100644 index fe8b86c..0000000 --- a/apps/home/filters.py +++ /dev/null @@ -1,23 +0,0 @@ -from decimal import Decimal -from django.db.models import Q -import django_filters -from .models import Scoreboard - -class ProductFilter(django_filters.FilterSet): - query = django_filters.CharFilter(method='universal_search', - label="") - - class Meta: - model = Scoreboard - fields = ['query'] - - def universal_search(self, queryset, name, value): - if value.replace(".", "", 1).isdigit(): - value = Decimal(value) - return Scoreboard.objects.filter( - Q(price=value) | Q(cost=value) - ) - - return Scoreboard.objects.filter( - Q(name__icontains=value) | Q(category__icontains=value) - ) diff --git a/apps/home/models.py b/apps/home/models.py index 92539b3..4056786 100644 --- a/apps/home/models.py +++ b/apps/home/models.py @@ -451,279 +451,3 @@ class LeagueResult(models.Model): def __str__(self): return f"{self.league.name} - {self.angler.name}" - - -# class Venue(models.Model): -# """Represents a Venue and Waters.""" - -# VENUE_TYPES = ( -# ("FISHERY", "Fishery"), -# ("CLUB", "Club"), -# ("PRIVATE", "Private") -# ) - -# name = models.CharField(max_length=255, null=True, blank=True) -# description = models.TextField(blank=True, max_length=500, null=True,) -# extra_notes = models.TextField(blank=True, null=True,) -# venue_type = models.CharField(choices=VENUE_TYPES, max_length=50, null=True, blank=True) - -# # Contact information -# phone_number = models.CharField(max_length=100, null=True, blank=True) -# email_address = models.EmailField(null=True, blank=True) -# website_url = models.URLField(null=True, blank=True) - -# # Location information -# street_address = models.CharField(max_length=100, null=True, blank=True) -# city = models.CharField(max_length=255, null=True, blank=True) -# provence = models.CharField(max_length=100, null=True, blank=True) -# postal_code = models.CharField(max_length=20, null=True, blank=True) -# country = models.CharField(max_length=100, null=True, blank=True) -# latitude = models.DecimalField(max_digits=9, decimal_places=6, null=True, blank=True) -# longitude = models.DecimalField(max_digits=9, decimal_places=6, null=True, blank=True) - -# # Socials information -# twitter_url = models.URLField(blank=True, null=True) -# instagram_url = models.URLField(blank=True, null=True) -# facebook_url = models.URLField(blank=True, null=True) - -# active = models.BooleanField(default=True) - -# def __str__(self): -# return self.name - -# def waters(self): -# """Returns all waters linked to this venue.""" - -# waters = Waters.objects.filter(venue=self) -# return waters - - -# 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.""" - -# def get_next_available_id(self, model_cls, using=None): -# """ -# Returns the next available id for the given model class. -# """ -# all_ids = set(range(1, model_cls._default_manager.count()+1)) -# used_ids = set(model_cls._default_manager.all().values_list('pk', flat=True)) -# available_ids = all_ids - used_ids - -# if available_ids: -# return min(available_ids) - -# if used_ids: -# return max(used_ids) + 1 - -# return 1 - -# def get_default(self): -# """Returns the default value for this field""" - -# return self.get_next_available_id(self.model) - - -# class SectionValidator: -# """Validation class for the `section` field on the `member` model.""" - -# def __init__(self, max_value="ZZZ"): -# self.max_value = max_value.upper() -# self.alphabet_size = ord("Z") - ord("A") + 1 - -# def is_valid(self, section: str, team_sections: list[str]=None) -> bool: -# """Returns boolean if the section passed is valid.""" -# section = section.upper() - -# if not self._is_alphanumeric(section): -# return False - -# if not self._is_in_alphabet(section[0]): -# return False - -# if not self._is_in_range(section): -# return False - -# if team_sections: -# if not self._is_unique(section, team_sections): -# return False - -# if not self._is_not_adjacent(section, team_sections): -# return False - -# return True - -# def _is_alphanumeric(self, section: str) -> bool: -# """Returns boolean if all characters in the passed string are alphanumerical.""" -# return all(c.isalnum() for c in section) - -# def _is_in_alphabet(self, c) -> bool: -# """Returns boolean if the passed character is alphabetical.""" -# return "A" <= c <= "Z" - -# def _is_in_range(self, section) -> bool: -# """Returns boolean if the passed section less or equal to the max value.""" -# section_value = self._section_value(section) -# max_value = self._section_value(self.max_value) - -# return section_value <= max_value - -# def _is_unique(self, section, team_sections) -> bool: -# """Returns boolean if the passed section is unique amongst `team_sections`.""" -# return section not in team_sections - -# def _is_not_adjacent(self, section, team_sections) -> bool: -# """Returns boolean if the passed section is not adjacent to any `team_sections`.""" -# for team_section in team_sections: -# team_section_value = self._section_value(team_section) -# section_value = self._section_value(section) -# if abs(team_section_value - section_value) <= 1: -# return False - -# return True - -# def _section_value(self, section): -# """Returns the value of the passed section.""" -# n = len(section) -# value = sum((ord(c) - ord("A") + 1) * self.alphabet_size ** (n - i - 1) for i, c in enumerate(section)) -# return value - - -# class SectionManager(models.Manager): - -# @staticmethod -# def get_max_section(): -# max_section = None -# max_number = -1 - -# # Iterate through all sections in the database -# for section in Section.objects.all(): -# section_name = section.name -# section_number = 0 - -# # Calculate the section number based on the section name -# for i, char in enumerate(section_name): -# section_number += (ord(char) - ord('A') + 1) * (26 ** (len(section_name) - i - 1)) - -# # Check if this section has a higher number than the current maximum -# if section_number > max_number: -# max_number = section_number -# max_section = section_name - -# return max_section - -# @staticmethod -# def find_next_section(current_section): -# if not current_section: -# return 'A' - -# # Split current section name into a list of characters -# chars = list(current_section) - -# # Increment the last character -# chars[-1] = chr(ord(chars[-1]) + 1) - -# # Check if the last character is "Z", and carry over to the next character if necessary -# for i in range(len(chars) - 1, -1, -1): -# if chars[i] > 'Z': -# chars[i] = 'A' -# if i == 0: -# # If the first character needs to be incremented, add a new character "A" -# chars.insert(0, 'A') -# else: -# # Increment the previous character -# chars[i - 1] = chr(ord(chars[i - 1]) + 1) -# else: -# break - -# # Join the characters back into a string and return the result -# return ''.join(chars) - -# class Section(models.Model): -# """Represents a fishing area. Members can be assigned to a section, -# but no 2 teammates can be in the same or adjacent section.""" - -# character = models.CharField(max_length=3, unique=True, null=False) - -# objects = SectionManager() - -# def clean(self): -# super().clean() -# self.character = self.character.upper() - -# def __str__(self) -> str: -# return self.character - - -# class Member(models.Model): -# """Represents a member of a team""" - -# first_name = models.CharField(max_length=255) -# last_name = models.CharField(max_length=255) -# team = models.ForeignKey("Team", on_delete=models.SET_NULL, null=True, blank=True, related_name='members') -# peg_number = models.PositiveIntegerField(null=True, editable=True, unique=True) -# section = models.ForeignKey(to=Section, on_delete=models.SET_NULL, null=True, swappable=True, related_name='members') - -# def __init__(self, *args, **kwargs): -# super().__init__(*args, **kwargs) - -# # If the peg_number field is not set, we assign it the smallest -# # available positive integer, excluding any used values. -# if not self.peg_number: -# used_peg_numbers = Member.objects.exclude(id=self.id).exclude(peg_number=None).values_list("peg_number", flat=True) -# peg_numbers = set(range(1, Member.objects.count() + 1)) - set(used_peg_numbers) -# if peg_numbers: -# self.peg_number = min (peg_numbers) - -# def __str__(self): -# return f"{self.first_name} {self.last_name} (team {self.team.number}) [section {self.section.character}]" - -# @property -# def fullname(self) -> str: -# return f"{self.first_name} {self.last_name}" - - -# class Team(models.Model): -# """Represents a team""" - -# number = models.PositiveIntegerField(unique=True, null=False, blank=False) - -# def __str__(self): -# return f"Team {self.number}" diff --git a/apps/home/urls.py b/apps/home/urls.py index b07daa1..c486297 100644 --- a/apps/home/urls.py +++ b/apps/home/urls.py @@ -3,22 +3,4 @@ from . import views urlpatterns = [ path('', views.index, name='index'), - # path('results/', views.results, name='results'), - # 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('venues/', views.venue_details, name="venue-details"), - # path("venues/api/", views.get_venue_details, name="venue-details"), - # path("venues/api/create", views.create_venue, name="create-venue"), - - # # path('bulk-peg/', views.bulk_create_pegs, name='bulk-peg'), - # path('get-angler-data/', views.get_angler_page_data, name='get-angler-data'), - # path('update-member/', views.update_member, name='update-member'), - # path('update-section/', views.update_section, name='update-section'), - # path('update-team/', views.update_team, name='update-team'), - # path("get-next-identifier/", views.get_next_identifier, name='get-next-identifier'), - - # # Rewrite - # path('anglers/', views.ManageAnglersView.as_view(), name='anglers'), ] \ No newline at end of file diff --git a/apps/home/views.py b/apps/home/views.py index 8da1997..6d51786 100644 --- a/apps/home/views.py +++ b/apps/home/views.py @@ -1,621 +1,6 @@ -"""Views for the main app.""" - -import json -from functools import reduce - -from django.shortcuts import render, redirect -from django.http import JsonResponse -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, HttpResponseNotFound -from django.core import serializers -from django.forms.models import model_to_dict - -# from .models import Venue, Waters +"""Views for the home app.""" +from django.shortcuts import render def index(request): - - # venues = Venue.objects.all() - # context = {"venues": venues, "venue_types": Venue.VENUE_TYPES} - - return render(request, 'index.html') #, context - -# def results(request): -# return render(request, 'results.html') - -# def scoreboard(request): -# return render(request, 'scoreboard.html') - -# def teams(request): -# return render(request, 'teams.html') - -# def venues(request): - -# venues = Venue.objects.all() -# 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 create_venue(request): - -# if request.method != "POST": -# return JsonResponse({"error", "Method not allowed"}, status=403) - -# test = request.POST - -# attributes = { -# name: request.POST.get(name) for name in -# [field.name for field in Venue._meta.get_fields()] -# } -# venue_id = request.POST.get("id") - -# if venue_id: -# venue = Venue.objects.get(id=venue_id) -# for k, v in attributes.items(): -# setattr(venue, k, v) - -# venue.save() -# return JsonResponse({"success": "successful update"}, status=200) - -# del attributes["id"] -# Venue.objects.create(**attributes) -# return JsonResponse({"success": "successful creation"}, status=200) - -# 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: -# 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""" - -# # number_of_pegs = request.POST.get("pegAmount") -# # for i in range(int(number_of_pegs)): -# # Peg.objects.create() - -# # # return to previous page -# # return redirect(request.META.get('HTTP_REFERER')) - -# def name_sort_key(section): -# if len(section.name) == 1: -# return (0, section.name) -# else: -# return (1, section.name[:-1], section.name[-1]) - - -# class ManageAnglersView(View): -# """View for the Manage Anglers page.""" - -# template_name = "anglers.html" - -# def get(self, request: HttpRequest, *args, **kwargs) -> HttpRequest: -# """Handle GET requests to the Manage Anglers page. - -# Args: -# request (HttpRequest): The HttpRequest object, contains GET data. - -# Returns: -# HttpRequest: A render of the Manage Anglers page. -# """ - -# anglers = Member.objects.order_by("first_name", "last_name") -# context = {"anglers": anglers} - -# return render(request, self.template_name, context) - -# def post(self, request: HttpRequest, *args, **kwargs) -> JsonResponse: -# """Handle POST requests to the Manage Anglers page. - -# Args: -# request (HttpRequest): The HttpRequest object, contains POST data. - -# Returns: -# JsonResponse: Contains the result of the action. -# """ - -# tasks = request.POST.getlist("tasks[]") - -# data = {} -# for task in tasks: -# data.update(self.handle_task(request, task)) - -# return JsonResponse(data) - -# def handle_task(self, request, task: str) -> dict[str, str]: -# """Handle a task. - -# Args: -# request (HttpRequest): HttpRequest object, contains POST data. -# task (str): The task to handle. - -# Raises: -# ValueError: The task is invalid. - -# Returns: -# dict[str, str]: The result of the task. -# """ - -# # Format is {key = ACTION-TASK_NAME: value = HANDLER_FUNCTION} -# task_handlers = { -# "update-team": self.update_team, -# "update-section": self.update_section, -# "update-angler": self.update_angler, -# "get-teams": self.get_teams, -# "get-sections": self.get_sections, -# "get-anglers": self.get_anglers, -# "delete-team": self.delete_team, -# "delete-section": self.delete_section, -# "delete-angler": self.delete_angler, -# "get-nextTeamNumber": self.get_next_team_number, -# "get-nextPegNumber": self.get_next_peg_number, -# } - -# handler = task_handlers.get(task) -# if not handler: -# raise ValueError(f"Invalid task: {task}") - -# return handler(request) - -# def update_team(self, request) -> dict[str]: -# """Update a team, returns a dictionary of the new team's data.""" - -# result = {"form_errors": {}, "team": None} -# team_id = request.POST.get("id") -# team_number = request.POST.get("number") - -# if not (team_id and team_number): -# raise ValueError("Team ID or Team Number is missing or empty") - -# if team_id == "-1": -# team = Team(number=team_number) -# else: -# team = Team.objects.get(id=team_id) -# team.number = team_number - -# try: -# team.save() -# result["team"] = {"id": team.id, "number": team.number} -# except IntegrityError: -# result["form_errors"]["#teamNumber"] = "A Team with this number already exists" - -# return result - -# def update_section(self, request) -> dict[str]: -# """Update a section, returns a dictionary of the new section's data.""" - -# result = {"form_errors": {}, "section": None} -# section_id = request.POST.get("id") -# section_character = request.POST.get("character") - -# if not (section_id and section_character): -# raise ValueError("Section ID or Section Character is missing or empty") - -# if section_id == "-1": -# section = Section(character=section_character) -# else: -# section = Section.objects.get(id=section_id) -# section.character = section_character - -# try: -# section.save() -# result["section"] = {"id": section.id, "character": section.character} -# except IntegrityError: -# result["form_errors"]["#editSectionNameError"] = "A Section with this character already exists" - -# return result - -# def update_angler(self, request) -> dict[str]: -# """Update an Angler, returns a dictionary of the new angler's data.""" - -# result = {"form_errors": {}, "angler": None} -# angler_id = request.POST.get("angler_id") -# forename = request.POST.get("forename") -# surname = request.POST.get("surname") -# peg_number = request.POST.get("peg_number") -# team_id = request.POST.get("team_id") -# section_id = request.POST.get("section_id") - -# if not angler_id: -# raise ValueError("Invalid angler ID") - -# team = Team.objects.get(id=team_id) -# section = Section.objects.get(id=section_id) - -# if angler_id == "-1": -# angler = Member( -# first_name=forename, -# last_name=surname, -# peg_number=peg_number, -# team=team, -# section=section -# ) -# else: -# angler = Member.objects.get(id=angler_id) -# angler.first_name = forename -# angler.last_name = surname -# angler.peg_number = peg_number -# angler.team = team -# angler.section = section - -# try: -# angler.save() -# except IntegrityError: -# result["form_errors"]["#anglerPeg"] = "An Angler with this peg number already exists" - -# result["angler"] = { -# "id": angler.id, -# "forename": forename, -# "surname": surname, -# "peg_number": peg_number, -# "team_id": team_id, -# "section_id": section_id, -# "team_number": angler.team.number, -# "section_character": angler.section.character -# } - -# return result - -# def get_teams(self, request) -> dict[str]: -# """Returns a dictionary of all teams.""" - -# search = request.POST.get("search") -# teams = Team.objects.order_by("number").all() - -# # Search works by exluding teams that do not contain members with the search term in their names. -# if search: -# search_terms = search.split() -# members = Member.objects.filter(reduce(lambda x, y: x & y, [ -# Q(first_name__icontains=term) | Q(last_name__icontains=term) -# for term in search_terms -# ])) -# teams = teams.filter(members__in=members).distinct() - -# return {"teams": [{"id": team.id, "number": team.number} for team in teams]} - -# def get_sections(self, request) -> dict[str]: -# """Returns a dictionary of all sections.""" - -# search = request.POST.get("search") -# sections = Section.objects.order_by("character").all() - -# if search: -# search_terms = search.split() -# members = Member.objects.filter(reduce(lambda x, y: x & y, [ -# Q(first_name__icontains=term) | Q(last_name__icontains=term) -# for term in search_terms -# ])) -# sections = sections.filter(members__in=members).distinct() - -# return {"sections": [{"id": section.id, "character": section.character} for section in sections]} - -# def get_anglers(self, request) -> dict[str]: -# """Returns a dictionary of all anglers.""" - -# search = request.POST.get("search") -# anglers = Member.objects.order_by("first_name").all() -# order_by = "peg_number" if request.POST.get("sortAnglers") == "pegs" else "first_name" - -# if search: -# search_terms = search.split() -# anglers = anglers.filter(reduce(lambda x, y: x & y, [ -# Q(first_name__icontains=term) | Q(last_name__icontains=term) -# for term in search_terms -# ])).distinct() - -# return { -# "anglers": [ -# { -# "id": angler.id, -# "first_name": angler.first_name, -# "last_name": angler.last_name, -# "peg_number": angler.peg_number, -# "team_id": angler.team.id, -# "section_id": angler.section.id, -# "team_number": angler.team.number, -# "section_character": angler.section.character -# } -# for angler in anglers.order_by(order_by).all() -# ] -# } - -# def delete_team(self, request) -> dict: -# """Deletes a team.""" - -# team_id = request.POST.get("team_id") -# if not team_id: -# raise ValueError("Invalid team ID") - -# teams = Team.objects.get(id=team_id) -# teams.delete() - -# return {} - -# def delete_section(self, request) -> dict: -# """Deletes a section.""" - -# section_id = request.POST.get("section_id") -# if not section_id: -# raise ValueError("Invalid section ID") - -# sections = Section.objects.get(id=section_id) -# sections.delete() - -# return {} - -# def delete_angler(self, request) -> dict: -# """Delete an angler.""" - -# angler_id = request.POST.get("angler_id") -# if not angler_id: -# raise ValueError("Invalid angler ID") - -# angler = Member.objects.get(id=angler_id) -# angler.delete() - -# return {} - -# def get_next_team_number(self, request) -> dict[str, int]: -# """Returns the next available team number.""" - -# next_team_number = 1 - -# while Team.objects.filter(number=next_team_number).exists(): -# next_team_number += 1 - -# return {"nextTeamNumber": next_team_number} - -# def get_next_peg_number(self, request) -> dict[str, int]: -# """Returns the next available peg number.""" - -# next_peg_number = 1 - -# while Member.objects.filter(peg_number=next_peg_number).exists(): -# next_peg_number += 1 - -# return {"nextPegNumber": next_peg_number} - - - - - - - - - - - - - - - - -# def get_angler_page_data(request, **kwargs): -# """Returns a JsonResponse containing a dictionary with a k/v pair for a list of teams. - -# Args: -# request: the web request object. -# Returns: -# JsonResponse: dictionary of teams like so {'teams': [{}, {}, {}]}. -# """ - -# if not request.POST: -# return - -# search = request.POST.get("search") -# sort_groups = request.POST.get("sortGroups") or "team" -# sort_members = request.POST.get("sortMembers") or "peg_number" - -# teams = Team.objects.order_by("number").all() -# sections = Section.objects.order_by("character").all() - -# if search: -# search_terms = search.split() -# members = Member.objects.filter( -# reduce( -# lambda x, y: x & y, ## changed to AND from OR to fix bug with whitespace searches -# [ -# Q(first_name__icontains=term) | Q(last_name__icontains=term) -# for term in search_terms -# ] -# ) -# ) -# teams = teams.filter(members__in=members).distinct() -# sections = sections.filter(members__in=members).distinct() - -# response_data = { -# "teams": [ -# {"id": team.id, "number": team.number} -# for team in teams -# ], -# "sections": [ -# {"id": sec.id, "character": sec.character} -# for sec in sections -# ], -# "anglers": [ -# { -# "id": member.id, -# "first": member.first_name, -# "last": member.last_name, -# "peg": member.peg_number, -# "team_id": member.team.id if member.team else None, -# "section_id": member.section.id if member.section else None -# } -# for member in Member.objects.order_by(sort_members).all() -# ] -# } - -# response_data["sortGroups"] = sort_groups -# response_data["sortMembers"] = sort_members - -# for key, value in kwargs.items(): -# response_data[key] = value - -# return JsonResponse(response_data) - - - - - -# def update_member(request): -# """Update a member. Returns a JsonResponse with the updated teams.""" - -# if not request.POST: -# return - -# # Get the updated values -# member_id = request.POST.get("memberId") -# first = request.POST.get("first") -# last = request.POST.get("last") -# team_number = request.POST.get("teamNumber") -# peg_number = request.POST.get("pegNumber") - -# # Get the member and team -# member = Member.objects.get(id=member_id) -# team = Team.objects.get(name=team_number) - -# # Update the member -# member.first_name = first -# member.last_name = last -# member.team = team -# member.peg_number = peg_number - -# member.save() - -# return get_angler_page_data(request) - -# def update_section(request): -# """Update a section, returns JsonResponse with updated teams data.""" - -# if not request.POST: -# return - -# section_id = request.POST.get("sectionId") -# section_name = request.POST.get("sectionName") - -# validator = SectionValidator() -# if not validator.is_valid(section_name): -# json_response = get_angler_page_data(request, form_errors={ -# "editSectionName": "This is an invalid section" -# }) -# return json_response - -# if section_id == "-1": -# section = Section(character=section_name) -# else: -# section = Section.objects.get(id=section_id) -# section.character = section_name - -# try: -# section.save() -# except IntegrityError: -# json_response = get_angler_page_data(request, form_errors={ -# "editSectionName": "A Section with this character already exists" -# }) -# return json_response - -# return get_angler_page_data(request) # returns jsonresponse with new details - -# def update_team(request): -# """Update a team, returns a JsonResponse with updated teams data.""" - -# if not request.POST: -# return - -# team_id = request.POST.get("id") -# team_number = request.POST.get("number") - -# try: -# if team_id == "-1": -# team = Team.objects.create(number=team_number) -# else: -# team = Team.objects.get(id=team_id) -# team.number = team_number -# team.save() -# except IntegrityError as error: -# json_response = get_angler_page_data(request, form_errors={ -# "editTeamNumber": "A Team with this number already exists" -# }) -# return json_response - -# return get_angler_page_data(request) - -# def get_next_peg() -> int: -# pass - -# def get_next_section() -> str: - -# section_name = SectionManager.get_max_section() -# return SectionManager.find_next_section(section_name) - - -# def get_next_team() -> int: - -# field = ReusableAutoField -# field.model = Team - -# return field().get_default() - - -# def get_next_identifier(request): -# """Get the next available identifer (peg, section character, etc.) for an object.""" - -# if not request.POST: -# return - -# item = request.POST.get("item") - -# match item: -# case "member_peg": -# result = get_next_peg() - -# case "section_name": -# result = get_next_section() - -# case "team_number": -# result = get_next_team() - -# case _: -# raise ValueError(f"Bad identifier item: {item}") - -# return JsonResponse({"identifier": result}) + return render(request, 'index.html')