fix: use request.admin_site in daily report views to avoid circular import

This commit is contained in:
ishenwei
2026-04-08 20:36:46 +08:00
parent 9412e7880d
commit 9542ebde73

View File

@@ -35,7 +35,6 @@ def daily_report_list_view(request):
.order_by("agent_name") .order_by("agent_name")
) )
# Query messages within range, select_related session for efficiency
messages_qs = Message.objects.filter( messages_qs = Message.objects.filter(
timestamp__date__gte=start_date, timestamp__date__gte=start_date,
timestamp__date__lte=end_date, timestamp__date__lte=end_date,
@@ -44,7 +43,6 @@ def daily_report_list_view(request):
if agent_filter: if agent_filter:
messages_qs = messages_qs.filter(session__agent_name=agent_filter) messages_qs = messages_qs.filter(session__agent_name=agent_filter)
# Group by (agent_name, date) in Python — simple and reliable
groups = defaultdict(lambda: {"message_count": 0, "session_ids": set()}) groups = defaultdict(lambda: {"message_count": 0, "session_ids": set()})
for msg in messages_qs: for msg in messages_qs:
d = msg.timestamp.date() d = msg.timestamp.date()
@@ -52,7 +50,6 @@ def daily_report_list_view(request):
groups[key]["message_count"] += 1 groups[key]["message_count"] += 1
groups[key]["session_ids"].add(msg.session.session_id) groups[key]["session_ids"].add(msg.session.session_id)
# Build sorted list (newest first, then by agent)
groups_list = sorted( groups_list = sorted(
[ [
{ {
@@ -66,8 +63,10 @@ def daily_report_list_view(request):
key=lambda x: (-x["date_val"].toordinal(), x["agent_name"]), key=lambda x: (-x["date_val"].toordinal(), x["agent_name"]),
) )
# Use request.admin_site (set by AdminSite.admin_view wrapper)
admin_site = getattr(request, "admin_site", admin.site)
context = { context = {
**admin.site.each_context(request), **admin_site.each_context(request),
"start_date": start_date, "start_date": start_date,
"end_date": end_date, "end_date": end_date,
"selected_agent": agent_filter, "selected_agent": agent_filter,
@@ -112,8 +111,9 @@ def daily_report_detail_view(request, agent_name, year, month, day):
"system": "System", "system": "System",
} }
admin_site = getattr(request, "admin_site", admin.site)
context = { context = {
**admin.site.each_context(request), **admin_site.each_context(request),
"agent_name": agent_name, "agent_name": agent_name,
"target_date": target_date, "target_date": target_date,
"sessions": sessions_with_messages, "sessions": sessions_with_messages,