impuls/lib/python3.11/site-packages/debug_toolbar/panels/history/views.py

73 lines
2.6 KiB
Python
Raw Normal View History

from django.http import HttpResponseBadRequest, JsonResponse
from django.template.loader import render_to_string
from debug_toolbar.decorators import render_with_toolbar_language, require_show_toolbar
from debug_toolbar.panels.history.forms import HistoryStoreForm
from debug_toolbar.toolbar import DebugToolbar
@require_show_toolbar
@render_with_toolbar_language
def history_sidebar(request):
"""Returns the selected debug toolbar history snapshot."""
form = HistoryStoreForm(request.GET)
if form.is_valid():
store_id = form.cleaned_data["store_id"]
toolbar = DebugToolbar.fetch(store_id)
exclude_history = form.cleaned_data["exclude_history"]
context = {}
if toolbar is None:
# When the store_id has been popped already due to
# RESULTS_CACHE_SIZE
return JsonResponse(context)
for panel in toolbar.panels:
if exclude_history and not panel.is_historical:
continue
panel_context = {"panel": panel}
context[panel.panel_id] = {
"button": render_to_string(
"debug_toolbar/includes/panel_button.html", panel_context
),
"content": render_to_string(
"debug_toolbar/includes/panel_content.html", panel_context
),
}
return JsonResponse(context)
return HttpResponseBadRequest("Form errors")
@require_show_toolbar
@render_with_toolbar_language
def history_refresh(request):
"""Returns the refreshed list of table rows for the History Panel."""
form = HistoryStoreForm(request.GET)
if form.is_valid():
requests = []
# Convert to list to handle mutations happening in parallel
for id, toolbar in list(DebugToolbar._store.items()):
requests.append(
{
"id": id,
"content": render_to_string(
"debug_toolbar/panels/history_tr.html",
{
"id": id,
"store_context": {
"toolbar": toolbar,
"form": HistoryStoreForm(
initial={
"store_id": id,
"exclude_history": True,
}
),
},
},
),
}
)
return JsonResponse({"requests": requests})
return HttpResponseBadRequest("Form errors")