v 0.3 Preview: Update admin
CI / test (push) Canceled after 4m2s

This commit is contained in:
2026-08-08 21:47:29 +08:00
parent 1f98f7152d
commit 43e425edbe
24 changed files with 1408 additions and 31 deletions
+44 -4
View File
@@ -20,6 +20,9 @@ class HulumathUserAdmin(UserAdmin):
("葫芦数学", {"fields": ("nickname", "track")}),
)
list_display = ("username", "nickname", "track", "rating", "is_active", "date_joined")
list_filter = ("is_active", "is_staff", "track", "date_joined")
search_fields = ("username", "nickname", "email")
ordering = ("-date_joined",)
@admin.register(InviteCode)
@@ -27,9 +30,46 @@ class InviteCodeAdmin(admin.ModelAdmin):
list_display = ("code", "group", "used_count", "max_uses", "expires_at", "is_active")
list_filter = ("is_active", "group")
search_fields = ("code", "group")
readonly_fields = ("used_count", "created_at")
ordering = ("-created_at",)
admin.site.register(InviteCodeUsage)
admin.site.register(UserSession)
admin.site.register(VisitorMigration)
admin.site.register(AuditLog)
@admin.register(InviteCodeUsage)
class InviteCodeUsageAdmin(admin.ModelAdmin):
list_display = ("invite_code", "user", "used_at", "ip_address")
search_fields = ("invite_code__code", "user__username", "user__nickname")
readonly_fields = ("invite_code", "user", "used_at", "ip_address")
ordering = ("-used_at",)
@admin.register(UserSession)
class UserSessionAdmin(admin.ModelAdmin):
list_display = ("user", "ip_address", "last_seen_at", "revoked_at")
search_fields = ("user__username", "user__nickname", "ip_address")
list_filter = ("revoked_at",)
readonly_fields = ("user", "session_key", "user_agent", "ip_address", "last_seen_at")
@admin.register(VisitorMigration)
class VisitorMigrationAdmin(admin.ModelAdmin):
list_display = ("user", "status", "created_at", "applied_at")
list_filter = ("status",)
search_fields = ("user__username", "user__nickname")
readonly_fields = ("user", "payload", "summary", "created_at", "applied_at")
@admin.register(AuditLog)
class AuditLogAdmin(admin.ModelAdmin):
list_display = ("action", "actor", "target_type", "target_id", "created_at")
list_filter = ("action", "target_type")
search_fields = ("actor__username", "action", "target_type", "target_id", "reason")
readonly_fields = (
"actor",
"action",
"target_type",
"target_id",
"reason",
"metadata",
"created_at",
)
ordering = ("-created_at",)