feat: Django Admin for Session, Message, ToolCall with inlines

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-05 14:54:56 +08:00
parent 0b94b6765d
commit a20eed9387

67
src/openclaw/admin.py Normal file
View File

@@ -0,0 +1,67 @@
from django.contrib import admin
from openclaw.models import Session, Message, ToolCall
class MessageInline(admin.TabularInline):
model = Message
extra = 0
fields = ("seq", "role", "content_text", "timestamp")
readonly_fields = ("seq", "role", "content_text", "timestamp")
def has_add_permission(self, request, obj=None):
return False
def has_delete_permission(self, request, obj=None):
return False
class ToolCallInline(admin.TabularInline):
model = ToolCall
extra = 0
fields = ("seq", "tool_name", "tool_call_id", "is_error", "duration_ms")
readonly_fields = ("seq", "tool_name", "tool_call_id", "is_error", "duration_ms")
def has_add_permission(self, request, obj=None):
return False
def has_delete_permission(self, request, obj=None):
return False
@admin.register(Session)
class SessionAdmin(admin.ModelAdmin):
list_display = (
"session_id",
"agent_name",
"model_id",
"total_tokens",
"message_count",
"start_time",
)
list_filter = ("agent_name", "source_node", "model_id", "start_time")
search_fields = ("session_id", "cwd")
ordering = ("-start_time",)
inlines = [MessageInline, ToolCallInline]
readonly_fields = (
"session_id",
"agent_name",
"source_node",
"start_time",
"end_time",
"pushed_at",
)
@admin.register(Message)
class MessageAdmin(admin.ModelAdmin):
list_display = ("message_id", "session", "role", "timestamp", "tokens_total")
list_filter = ("role", "model", "timestamp")
search_fields = ("content_text",)
ordering = ("-timestamp",)
@admin.register(ToolCall)
class ToolCallAdmin(admin.ModelAdmin):
list_display = ("tool_name", "tool_call_id", "session", "is_error", "duration_ms")
list_filter = ("tool_name", "is_error", "exit_code")
ordering = ("-created_at",)