Adds tournament filter for team_score and match

clubs
Laurent 1 year ago
parent b737a2dd9d
commit 50a8a81d4a
  1. 7
      tournaments/admin.py
  2. 43
      tournaments/filters.py
  3. 3
      tournaments/models/group_stage.py
  4. 8
      tournaments/models/round.py

@ -1,11 +1,16 @@
from django.contrib import admin
from tournaments.models import team_registration
from .models import Club, TeamScore, Tournament, CustomUser, Event, Round, GroupStage, Match, TeamRegistration, PlayerRegistration, Purchase, Court, DateInterval, FailedApiCall
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.forms import UserCreationForm, UserChangeForm
from .forms import CustomUserCreationForm, CustomUserChangeForm
from .filters import TeamScoreTournamentListFilter, MatchTournamentListFilter
class CustomUserAdmin(UserAdmin):
form = CustomUserChangeForm
add_form = CustomUserCreationForm
@ -38,6 +43,7 @@ class TournamentAdmin(admin.ModelAdmin):
class TeamScoreAdmin(admin.ModelAdmin):
list_display = ['team_registration', 'match', 'score', 'walk_out']
list_filter = [TeamScoreTournamentListFilter]
class RoundAdmin(admin.ModelAdmin):
list_display = ['tournament', 'name', 'index', 'parent']
@ -49,6 +55,7 @@ class PlayerRegistrationAdmin(admin.ModelAdmin):
class MatchAdmin(admin.ModelAdmin):
list_display = ['__str__', 'round', 'group_stage', 'start_date', 'index']
list_filter = [MatchTournamentListFilter]
class GroupStageAdmin(admin.ModelAdmin):
list_display = ['tournament', 'index', 'start_date']

@ -0,0 +1,43 @@
from django.contrib import admin
from .models import Club, TeamScore, Tournament, CustomUser, Event, Round, GroupStage, Match, TeamRegistration, PlayerRegistration, Purchase, Court, DateInterval, FailedApiCall
from django.db.models import Q
from django.utils.translation import gettext_lazy as _
import uuid
class TeamScoreTournamentListFilter(admin.SimpleListFilter):
# Human-readable title which will be displayed in the
# right admin sidebar just above the filter options.
title = _("tournoi")
# Parameter for the filter that will be used in the URL query.
parameter_name = "tournament"
def lookups(self, request, model_admin):
tournaments = Tournament.objects.order_by('-start_date')
return [(t.id, t.display_name()) for t in tournaments]
def queryset(self, request, queryset):
if self.value():
return queryset.filter(team_registration__tournament__id=self.value())
else:
return queryset
class MatchTournamentListFilter(admin.SimpleListFilter):
# Human-readable title which will be displayed in the
# right admin sidebar just above the filter options.
title = _("tournoi")
# Parameter for the filter that will be used in the URL query.
parameter_name = "tournament"
def lookups(self, request, model_admin):
tournaments = Tournament.objects.order_by('-start_date')
return [(t.id, t.display_name()) for t in tournaments]
def queryset(self, request, queryset):
if self.value():
query_round = Q(round__tournament__id=self.value())
query_group_stage = Q(group_stage__tournament__id=self.value())
return queryset.filter(query_round | query_group_stage)
else:
return queryset

@ -15,7 +15,8 @@ class GroupStage(models.Model):
name = models.CharField(max_length=200, null=True, blank=True)
def __str__(self):
return f"{self.tournament.display_name()} - {self.display_name()}"
return self.display_name()
# return f"{self.tournament.display_name()} - {self.display_name()}"
def display_name(self):
if self.name:

@ -12,9 +12,13 @@ class Round(models.Model):
def __str__(self):
if self.parent:
return f"{self.tournament.display_name()} - LB: {self.name()}"
return f"LB: {self.name()}"
else:
return f"{self.tournament.display_name()} - {self.name()}"
return self.name()
# if self.parent:
# return f"{self.tournament.display_name()} - LB: {self.name()}"
# else:
# return f"{self.tournament.display_name()} - {self.name()}"
def name(self):
if self.parent:

Loading…
Cancel
Save