1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
from django.http import HttpResponseBadRequest, JsonResponse
from django.template.loader import render_to_string
from debug_toolbar._compat import login_not_required
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
@login_not_required
@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")
@login_not_required
@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")
|