31 lines
1.0 KiB
Python
31 lines
1.0 KiB
Python
from django.contrib import admin
|
|
from django_object_actions import DjangoObjectActions, action
|
|
|
|
from .canvas import rebuild_canvas_from_history
|
|
from .models import PixelPlacement, PlaceSettings
|
|
|
|
|
|
@admin.register(PlaceSettings)
|
|
class PlaceSettingsAdmin(DjangoObjectActions, admin.ModelAdmin):
|
|
list_display = ("event", "width", "height")
|
|
list_editable = ("width", "height")
|
|
list_filter = ("event",)
|
|
change_actions = ("resync_canvas",)
|
|
|
|
@action(
|
|
label="Resync canvas from DB",
|
|
description="Rebuild the live Redis canvas by replaying the full PixelPlacement history",
|
|
)
|
|
def resync_canvas(self, request, obj):
|
|
count = rebuild_canvas_from_history(obj.event, obj.width, obj.height)
|
|
self.message_user(
|
|
request,
|
|
f"Canvas resynced from {count} placement(s) at {obj.width}x{obj.height}.",
|
|
)
|
|
|
|
|
|
@admin.register(PixelPlacement)
|
|
class PixelPlacementAdmin(admin.ModelAdmin):
|
|
list_display = ("id", "event", "player", "x", "y", "color_index", "placed_at")
|
|
list_filter = ("event", "player")
|