78 lines
2.2 KiB
Python
78 lines
2.2 KiB
Python
from django.contrib import admin
|
|
from django.contrib import messages
|
|
|
|
from .models import Nationality, Player, PlayerAlias, PlayerCareerEntry, Position, Role
|
|
from .services.origin import refresh_player_origins
|
|
|
|
|
|
@admin.register(Nationality)
|
|
class NationalityAdmin(admin.ModelAdmin):
|
|
list_display = ("name", "iso2_code", "iso3_code")
|
|
search_fields = ("name", "iso2_code", "iso3_code")
|
|
|
|
|
|
@admin.register(Position)
|
|
class PositionAdmin(admin.ModelAdmin):
|
|
list_display = ("code", "name")
|
|
search_fields = ("code", "name")
|
|
|
|
|
|
@admin.register(Role)
|
|
class RoleAdmin(admin.ModelAdmin):
|
|
list_display = ("code", "name")
|
|
search_fields = ("code", "name")
|
|
|
|
|
|
class PlayerAliasInline(admin.TabularInline):
|
|
model = PlayerAlias
|
|
extra = 0
|
|
|
|
|
|
class PlayerCareerEntryInline(admin.TabularInline):
|
|
model = PlayerCareerEntry
|
|
extra = 0
|
|
|
|
|
|
@admin.register(Player)
|
|
class PlayerAdmin(admin.ModelAdmin):
|
|
list_display = (
|
|
"full_name",
|
|
"birth_date",
|
|
"nationality",
|
|
"nominal_position",
|
|
"inferred_role",
|
|
"origin_competition",
|
|
"origin_team",
|
|
"is_active",
|
|
)
|
|
list_filter = (
|
|
"is_active",
|
|
"nationality",
|
|
"nominal_position",
|
|
"inferred_role",
|
|
"origin_competition",
|
|
"origin_team",
|
|
)
|
|
search_fields = ("full_name", "first_name", "last_name")
|
|
inlines = (PlayerAliasInline, PlayerCareerEntryInline)
|
|
actions = ("recompute_origin_fields",)
|
|
|
|
@admin.action(description="Recompute origin fields")
|
|
def recompute_origin_fields(self, request, queryset):
|
|
updated = refresh_player_origins(queryset)
|
|
self.message_user(request, f"Updated origin fields for {updated} player(s).", level=messages.SUCCESS)
|
|
|
|
|
|
@admin.register(PlayerAlias)
|
|
class PlayerAliasAdmin(admin.ModelAdmin):
|
|
list_display = ("alias", "player", "source", "is_primary")
|
|
list_filter = ("is_primary", "source")
|
|
search_fields = ("alias", "player__full_name")
|
|
|
|
|
|
@admin.register(PlayerCareerEntry)
|
|
class PlayerCareerEntryAdmin(admin.ModelAdmin):
|
|
list_display = ("player", "team", "competition", "season", "start_date", "end_date")
|
|
list_filter = ("competition", "season", "role_snapshot")
|
|
search_fields = ("player__full_name", "team__name", "competition__name")
|