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 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 .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.admin import UserAdmin
from django.contrib.auth.forms import UserCreationForm, UserChangeForm from django.contrib.auth.forms import UserCreationForm, UserChangeForm
from .forms import CustomUserCreationForm, CustomUserChangeForm from .forms import CustomUserCreationForm, CustomUserChangeForm
from .filters import TeamScoreTournamentListFilter, MatchTournamentListFilter
class CustomUserAdmin(UserAdmin): class CustomUserAdmin(UserAdmin):
form = CustomUserChangeForm form = CustomUserChangeForm
add_form = CustomUserCreationForm add_form = CustomUserCreationForm
@ -38,6 +43,7 @@ class TournamentAdmin(admin.ModelAdmin):
class TeamScoreAdmin(admin.ModelAdmin): class TeamScoreAdmin(admin.ModelAdmin):
list_display = ['team_registration', 'match', 'score', 'walk_out'] list_display = ['team_registration', 'match', 'score', 'walk_out']
list_filter = [TeamScoreTournamentListFilter]
class RoundAdmin(admin.ModelAdmin): class RoundAdmin(admin.ModelAdmin):
list_display = ['tournament', 'name', 'index', 'parent'] list_display = ['tournament', 'name', 'index', 'parent']
@ -49,6 +55,7 @@ class PlayerRegistrationAdmin(admin.ModelAdmin):
class MatchAdmin(admin.ModelAdmin): class MatchAdmin(admin.ModelAdmin):
list_display = ['__str__', 'round', 'group_stage', 'start_date', 'index'] list_display = ['__str__', 'round', 'group_stage', 'start_date', 'index']
list_filter = [MatchTournamentListFilter]
class GroupStageAdmin(admin.ModelAdmin): class GroupStageAdmin(admin.ModelAdmin):
list_display = ['tournament', 'index', 'start_date'] 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) name = models.CharField(max_length=200, null=True, blank=True)
def __str__(self): 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): def display_name(self):
if self.name: if self.name:

@ -12,9 +12,13 @@ class Round(models.Model):
def __str__(self): def __str__(self):
if self.parent: if self.parent:
return f"{self.tournament.display_name()} - LB: {self.name()}" return f"LB: {self.name()}"
else: 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): def name(self):
if self.parent: if self.parent:

Loading…
Cancel
Save