Files
vrobbler/vrobbler/apps/sports/admin.py
Colin Powell 102494ede7
All checks were successful
build / test (push) Successful in 1m55s
[admin] Use raw ids where possible and simplify scrobble inlines
2026-06-15 13:25:10 -04:00

92 lines
2.0 KiB
Python

from django.contrib import admin
from sports.models import (
League,
Player,
Round,
Season,
Sport,
SportEvent,
Team,
)
from scrobbles.admin import ScrobbleInline
@admin.register(Sport)
class SportAdmin(admin.ModelAdmin):
date_hierarchy = "created"
ordering = ("name",)
@admin.register(League)
class LeagueAdmin(admin.ModelAdmin):
date_hierarchy = "created"
list_display = ("name", "abbreviation_str")
raw_id_fields = ("sport",)
ordering = ("name",)
@admin.register(Player)
class PlayerAdmin(admin.ModelAdmin):
date_hierarchy = "created"
list_display = ("name", "league", "team")
raw_id_fields = ("league", "team")
ordering = ("name",)
@admin.register(Season)
class SeasonAdmin(admin.ModelAdmin):
date_hierarchy = "created"
list_display = ("name", "league")
raw_id_fields = ("league",)
ordering = ("name",)
@admin.register(Round)
class RoundAdmin(admin.ModelAdmin):
date_hierarchy = "created"
list_display = ("name", "season")
raw_id_fields = ("season",)
ordering = ("name",)
@admin.register(Team)
class TeamAdmin(admin.ModelAdmin):
date_hierarchy = "created"
list_display = ("name", "league")
raw_id_fields = ("league",)
ordering = ("name",)
@admin.register(SportEvent)
class SportEventAdmin(admin.ModelAdmin):
date_hierarchy = "created"
list_display = (
"title",
"league",
"event_type",
"comp_str",
)
raw_id_fields = ("league", "teams", "players", "round")
list_filter = ("league", "event_type")
ordering = ("-created",)
inlines = [
ScrobbleInline,
]
def comp_str(self, obj):
teams = list(obj.teams.all())
if len(teams) >= 2:
return f"{teams[1]} v {teams[0]}"
players = list(obj.players.all())
if len(players) >= 2:
return f"{players[0]} v {players[1]}"
if len(players) == 1:
return str(players[0])
if len(teams) == 1:
return str(teams[0])