2026-07-02 09:07:15 +08:00
|
|
|
from django.contrib import admin
|
2026-07-02 09:46:32 +08:00
|
|
|
from django.contrib.auth.admin import UserAdmin as DjangoUserAdmin
|
2026-07-02 09:07:15 +08:00
|
|
|
|
2026-07-02 15:06:00 +08:00
|
|
|
from .models import ApiKey, User, UserWallet
|
2026-07-02 09:46:32 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
@admin.register(User)
|
|
|
|
|
class UserAdmin(DjangoUserAdmin):
|
|
|
|
|
fieldsets = DjangoUserAdmin.fieldsets + (
|
|
|
|
|
("Cmhub", {"fields": ("payment_user_id", "status", "created_at")}),
|
|
|
|
|
)
|
|
|
|
|
readonly_fields = ("created_at",)
|
|
|
|
|
list_display = (
|
|
|
|
|
"username",
|
|
|
|
|
"email",
|
|
|
|
|
"status",
|
|
|
|
|
"is_staff",
|
|
|
|
|
"is_active",
|
|
|
|
|
"created_at",
|
|
|
|
|
)
|
|
|
|
|
list_filter = DjangoUserAdmin.list_filter + ("status",)
|
|
|
|
|
search_fields = ("username", "email", "payment_user_id")
|
2026-07-02 15:06:00 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
@admin.register(UserWallet)
|
|
|
|
|
class UserWalletAdmin(admin.ModelAdmin):
|
|
|
|
|
list_display = ("user", "points_balance", "updated_at")
|
|
|
|
|
search_fields = ("user__username", "user__email")
|
|
|
|
|
readonly_fields = ("user", "points_balance", "created_at", "updated_at")
|
|
|
|
|
ordering = ("user__username",)
|
|
|
|
|
|
|
|
|
|
def has_add_permission(self, request):
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
def has_delete_permission(self, request, obj=None):
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@admin.register(ApiKey)
|
|
|
|
|
class ApiKeyAdmin(admin.ModelAdmin):
|
|
|
|
|
list_display = ("key_prefix", "user", "name", "status", "last_used_at", "created_at")
|
|
|
|
|
list_filter = ("status", "created_at")
|
|
|
|
|
search_fields = ("key_prefix", "user__username", "user__email", "name")
|
|
|
|
|
readonly_fields = (
|
|
|
|
|
"user",
|
|
|
|
|
"key_prefix",
|
|
|
|
|
"key_hash_masked",
|
|
|
|
|
"last_used_at",
|
|
|
|
|
"created_at",
|
|
|
|
|
"updated_at",
|
|
|
|
|
)
|
|
|
|
|
fields = (
|
|
|
|
|
"user",
|
|
|
|
|
"name",
|
|
|
|
|
"status",
|
|
|
|
|
"key_prefix",
|
|
|
|
|
"key_hash_masked",
|
|
|
|
|
"last_used_at",
|
|
|
|
|
"created_at",
|
|
|
|
|
"updated_at",
|
|
|
|
|
)
|
|
|
|
|
ordering = ("-created_at", "-id")
|
|
|
|
|
|
|
|
|
|
@admin.display(description="key hash")
|
|
|
|
|
def key_hash_masked(self, obj):
|
|
|
|
|
if not obj.key_hash:
|
|
|
|
|
return ""
|
|
|
|
|
return f"{obj.key_hash[:8]}...{obj.key_hash[-6:]}"
|
|
|
|
|
|
|
|
|
|
def has_add_permission(self, request):
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
def has_delete_permission(self, request, obj=None):
|
|
|
|
|
return False
|