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")