From 2c4dac628e0b23ebb27a91d824bc71c2e7ed2228 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Gremaud?= Date: Fri, 23 Oct 2026 18:06:59 +0200 Subject: [PATCH] feat(games): disable games inline --- polylan_submitter/games/admin.py | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/polylan_submitter/games/admin.py b/polylan_submitter/games/admin.py index 65510c2..7b115af 100644 --- a/polylan_submitter/games/admin.py +++ b/polylan_submitter/games/admin.py @@ -51,13 +51,35 @@ class EventGameAdmin(DjangoObjectActions, admin.ModelAdmin): list_display = ["game", "event", "enabled", "has_apibot_token"] list_filter = ["event", "enabled"] search_fields = ["game__name", "event__name"] - actions = ["sync_scopes", "stop_scope_sync"] + actions = ["enable", "disable", "sync_scopes", "stop_scope_sync"] change_actions = ["sync_scopes", "stop_scope_sync"] @admin.display(description="AAndT token", boolean=True) def has_apibot_token(self, obj): return bool(obj.apibot_token) + def _set_enabled(self, request, queryset, enabled: bool): + # save() per row (not update()) so post_save fires, e.g. the clock heartbeat + changed = 0 + for event_game in queryset.select_related("game").filter(enabled=not enabled): + event_game.enabled = enabled + event_game.save(update_fields=["enabled"]) + changed += 1 + + self.message_user( + request, + f"{'Enabled' if enabled else 'Disabled'} {changed} EventGame(s)" + f" ({queryset.count() - changed} already {'enabled' if enabled else 'disabled'}).", + ) + + @admin.action(description="Enable selected EventGames") + def enable(self, request, queryset): + self._set_enabled(request, queryset, enabled=True) + + @admin.action(description="Disable selected EventGames") + def disable(self, request, queryset): + self._set_enabled(request, queryset, enabled=False) + @action( label="Sync scopes", description="Sync scopes from AAndT for selected EventGames",