feat: use django-objects-actions
This commit is contained in:
@@ -1,6 +1,11 @@
|
||||
from django.contrib import admin
|
||||
from django.utils.html import format_html
|
||||
from django.utils import timezone
|
||||
from django_object_actions import (
|
||||
DjangoObjectActions,
|
||||
action,
|
||||
takes_instance_or_queryset,
|
||||
)
|
||||
from opus_magnum.models import (
|
||||
SteamAPIKey,
|
||||
SteamCollection,
|
||||
@@ -185,7 +190,7 @@ class PuzzleResponseInline(admin.TabularInline):
|
||||
|
||||
|
||||
@admin.register(Submission)
|
||||
class SubmissionAdmin(admin.ModelAdmin):
|
||||
class SubmissionAdmin(DjangoObjectActions, admin.ModelAdmin):
|
||||
list_display = [
|
||||
"id",
|
||||
"user",
|
||||
@@ -238,9 +243,11 @@ class SubmissionAdmin(admin.ModelAdmin):
|
||||
)
|
||||
|
||||
actions = ["mark_as_validated"]
|
||||
change_actions = ["mark_as_validated"]
|
||||
|
||||
@action(label="Validate", description="Mark selected submissions as validated")
|
||||
@takes_instance_or_queryset
|
||||
def mark_as_validated(self, request, queryset):
|
||||
"""Mark selected submissions as validated"""
|
||||
updated = 0
|
||||
for submission in queryset:
|
||||
if not submission.is_validated:
|
||||
@@ -254,11 +261,9 @@ class SubmissionAdmin(admin.ModelAdmin):
|
||||
|
||||
self.message_user(request, f"{updated} submissions marked as validated.")
|
||||
|
||||
mark_as_validated.short_description = "Mark selected submissions as validated"
|
||||
|
||||
|
||||
@admin.register(PuzzleResponse)
|
||||
class PuzzleResponseAdmin(admin.ModelAdmin):
|
||||
class PuzzleResponseAdmin(DjangoObjectActions, admin.ModelAdmin):
|
||||
list_display = [
|
||||
"puzzle_name",
|
||||
"submission",
|
||||
@@ -314,22 +319,22 @@ class PuzzleResponseAdmin(admin.ModelAdmin):
|
||||
)
|
||||
|
||||
actions = ["mark_for_validation", "clear_validation_flag"]
|
||||
change_actions = ["mark_for_validation", "clear_validation_flag"]
|
||||
|
||||
@action(label="Mark for validation", description="Mark as needing validation")
|
||||
@takes_instance_or_queryset
|
||||
def mark_for_validation(self, request, queryset):
|
||||
"""Mark selected responses as needing validation"""
|
||||
updated = queryset.update(needs_manual_validation=True)
|
||||
self.message_user(request, f"{updated} responses marked for validation.")
|
||||
|
||||
@action(label="Clear validation flag", description="Clear validation flag")
|
||||
@takes_instance_or_queryset
|
||||
def clear_validation_flag(self, request, queryset):
|
||||
"""Clear validation flag for selected responses"""
|
||||
updated = queryset.update(needs_manual_validation=False)
|
||||
self.message_user(
|
||||
request, f"{updated} responses cleared from validation queue."
|
||||
)
|
||||
|
||||
mark_for_validation.short_description = "Mark as needing validation"
|
||||
clear_validation_flag.short_description = "Clear validation flag"
|
||||
|
||||
|
||||
@admin.register(SubmissionFile)
|
||||
class SubmissionFileAdmin(admin.ModelAdmin):
|
||||
|
||||
Reference in New Issue
Block a user