old code removal
This commit is contained in:
parent
b8f40d888a
commit
0c914eeb06
@ -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",)
|
||||
|
@ -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)
|
||||
)
|
@ -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}"
|
||||
|
@ -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/<int:venue_id>', views.get_venue_waters, name="get-venue-waters"),
|
||||
# path('venues/<int:venue_id>', views.venue_details, name="venue-details"),
|
||||
# path("venues/api/<int:venue_id>", 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'),
|
||||
]
|
@ -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("<h1>404 - Venue not found</h1>")
|
||||
|
||||
# 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')
|
||||
|
Loading…
x
Reference in New Issue
Block a user