from django.contrib import admin from django.contrib.auth.admin import UserAdmin as DjangoUserAdmin from .models import ApiKey, User, UserWallet @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") @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