Files
Hulumath-Web/backend/contest/admin.py
T
Jacky 43e425edbe
CI / test (push) Canceled after 4m2s
v 0.3 Preview: Update admin
2026-08-08 21:47:29 +08:00

67 lines
1.9 KiB
Python

from django.contrib import admin
from .models import (
CheatFlag,
Contest,
ContestAnswer,
ContestAttempt,
ContestQuestion,
LeaderboardSnapshot,
Question,
QuestionVersion,
RatingHistory,
RealtimeMatch,
)
class ContestQuestionInline(admin.TabularInline):
model = ContestQuestion
extra = 1
@admin.register(Contest)
class ContestAdmin(admin.ModelAdmin):
list_display = ("title", "kind", "track", "status", "starts_at", "ends_at")
list_filter = ("kind", "track", "status")
search_fields = ("title", "slug")
list_editable = ("status",)
ordering = ("-starts_at", "title")
inlines = [ContestQuestionInline]
@admin.register(ContestAttempt)
class ContestAttemptAdmin(admin.ModelAdmin):
list_display = ("id", "user", "contest", "status", "score", "duration_ms", "started_at")
list_filter = ("status", "contest__kind", "contest__track")
readonly_fields = ("started_at", "submitted_at")
@admin.register(CheatFlag)
class CheatFlagAdmin(admin.ModelAdmin):
list_display = ("attempt", "reason", "status", "created_at")
list_filter = ("status", "reason")
search_fields = ("attempt__user__username", "attempt__user__nickname", "reason")
list_editable = ("status",)
ordering = ("-created_at",)
@admin.register(Question)
class QuestionAdmin(admin.ModelAdmin):
list_display = ("slug", "track", "is_active", "tags")
list_filter = ("track", "is_active")
search_fields = ("slug", "versions__prompt")
list_editable = ("is_active",)
@admin.register(QuestionVersion)
class QuestionVersionAdmin(admin.ModelAdmin):
list_display = ("question", "version", "prompt", "created_at")
search_fields = ("question__slug", "prompt", "answer")
ordering = ("question", "-version")
admin.site.register(ContestAnswer)
admin.site.register(RealtimeMatch)
admin.site.register(RatingHistory)
admin.site.register(LeaderboardSnapshot)