from django.contrib import admin from .models import CallRecord, PointsLedger class ReadOnlyLedgerAdmin(admin.ModelAdmin): def get_readonly_fields(self, request, obj=None): return tuple(field.name for field in self.model._meta.fields) def has_add_permission(self, request): return False def has_change_permission(self, request, obj=None): return False def has_delete_permission(self, request, obj=None): return False @admin.register(PointsLedger) class PointsLedgerAdmin(ReadOnlyLedgerAdmin): list_display = ( "created_at", "user", "change_type", "points_delta", "balance_after", "ref_order_id", "ref_call", ) list_filter = ("change_type", "created_at") search_fields = ("user__username", "user__email", "reason") ordering = ("-created_at", "-id") @admin.register(CallRecord) class CallRecordAdmin(ReadOnlyLedgerAdmin): list_display = ( "created_at", "user", "api_key", "operation_type", "alias", "model_used", "points_cost", "status", "upstream_latency_ms", ) list_filter = ("operation_type", "status", "created_at") search_fields = ( "user__username", "user__email", "api_key__key_prefix", "alias", "model_used", "error_message", "result_ref", "result_summary", ) ordering = ("-created_at", "-id")