feat(games): disable games inline
This commit is contained in:
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user