feat: Django Admin for Session, Message, ToolCall with inlines
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
67
src/openclaw/admin.py
Normal file
67
src/openclaw/admin.py
Normal 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",)
|
||||||
Reference in New Issue
Block a user