File tree Expand file tree Collapse file tree 7 files changed +61
-0
lines changed Expand file tree Collapse file tree 7 files changed +61
-0
lines changed Original file line number Diff line number Diff line change 1+ try :
2+ from django .contrib .auth .decorators import login_not_required
3+ except ImportError :
4+ # For Django < 5.1, copy the current Django implementation
5+ def login_not_required (view_func ):
6+ """
7+ Decorator for views that allows access to unauthenticated requests.
8+ """
9+ view_func .login_required = False
10+ return view_func
Original file line number Diff line number Diff line change 11from django .http import HttpResponseBadRequest , JsonResponse
22from django .template .loader import render_to_string
33
4+ from debug_toolbar ._compat import login_not_required
45from debug_toolbar .decorators import render_with_toolbar_language , require_show_toolbar
56from debug_toolbar .panels .history .forms import HistoryStoreForm
67from debug_toolbar .toolbar import DebugToolbar
78
89
10+ @login_not_required
911@require_show_toolbar
1012@render_with_toolbar_language
1113def history_sidebar (request ):
@@ -37,6 +39,7 @@ def history_sidebar(request):
3739 return HttpResponseBadRequest ("Form errors" )
3840
3941
42+ @login_not_required
4043@require_show_toolbar
4144@render_with_toolbar_language
4245def history_refresh (request ):
Original file line number Diff line number Diff line change 22from django .template .loader import render_to_string
33from django .views .decorators .csrf import csrf_exempt
44
5+ from debug_toolbar ._compat import login_not_required
56from debug_toolbar .decorators import render_with_toolbar_language , require_show_toolbar
67from debug_toolbar .forms import SignedDataForm
78from debug_toolbar .panels .sql .forms import SQLSelectForm
@@ -17,6 +18,7 @@ def get_signed_data(request):
1718
1819
1920@csrf_exempt
21+ @login_not_required
2022@require_show_toolbar
2123@render_with_toolbar_language
2224def sql_select (request ):
@@ -47,6 +49,7 @@ def sql_select(request):
4749
4850
4951@csrf_exempt
52+ @login_not_required
5053@require_show_toolbar
5154@render_with_toolbar_language
5255def sql_explain (request ):
@@ -86,6 +89,7 @@ def sql_explain(request):
8689
8790
8891@csrf_exempt
92+ @login_not_required
8993@require_show_toolbar
9094@render_with_toolbar_language
9195def sql_profile (request ):
Original file line number Diff line number Diff line change 55from django .template .loader import render_to_string
66from django .utils .html import format_html , mark_safe
77
8+ from debug_toolbar ._compat import login_not_required
89from debug_toolbar .decorators import render_with_toolbar_language , require_show_toolbar
910
1011
12+ @login_not_required
1113@require_show_toolbar
1214@render_with_toolbar_language
1315def template_source (request ):
Original file line number Diff line number Diff line change 22from django .utils .html import escape
33from django .utils .translation import gettext as _
44
5+ from debug_toolbar ._compat import login_not_required
56from debug_toolbar .decorators import render_with_toolbar_language , require_show_toolbar
67from debug_toolbar .toolbar import DebugToolbar
78
89
10+ @login_not_required
911@require_show_toolbar
1012@render_with_toolbar_language
1113def render_panel (request ):
Original file line number Diff line number Diff line change @@ -11,6 +11,7 @@ Pending
1111 `Google Summer of Code Project 2024
1212 <https://summerofcode.withgoogle.com/programs/2024/projects/iXVvyGYp> `__.
1313* Added Django 5.1 to the CI matrix.
14+ * Added support for the ``LoginRequiredMiddleware `` introduced in Django 5.1.
1415* Support select and explain buttons for ``UNION `` queries on PostgreSQL.
1516* Fixed internal toolbar requests being instrumented if the Django setting
1617 ``FORCE_SCRIPT_NAME `` was set.
Original file line number Diff line number Diff line change 1+ import unittest
2+
3+ import django
4+ from django .test import SimpleTestCase , override_settings
5+ from django .urls import reverse
6+
7+
8+ @unittest .skipIf (
9+ django .VERSION < (5 , 1 ),
10+ "Valid on Django 5.1 and above, requires LoginRequiredMiddleware" ,
11+ )
12+ @override_settings (
13+ DEBUG = True ,
14+ MIDDLEWARE = [
15+ "django.contrib.sessions.middleware.SessionMiddleware" ,
16+ "django.contrib.auth.middleware.AuthenticationMiddleware" ,
17+ "django.contrib.auth.middleware.LoginRequiredMiddleware" ,
18+ "debug_toolbar.middleware.DebugToolbarMiddleware" ,
19+ ],
20+ )
21+ class LoginNotRequiredTestCase (SimpleTestCase ):
22+ def test_panels (self ):
23+ for uri in (
24+ "history_sidebar" ,
25+ "history_refresh" ,
26+ "sql_select" ,
27+ "sql_explain" ,
28+ "sql_profile" ,
29+ "template_source" ,
30+ ):
31+ with self .subTest (uri = uri ):
32+ response = self .client .get (reverse (f"djdt:{ uri } " ))
33+ self .assertNotEqual (response .status_code , 200 )
34+
35+ def test_render_panel (self ):
36+ response = self .client .get (
37+ reverse ("djdt:render_panel" ), query_params = {"store_id" : "store_id" }
38+ )
39+ self .assertEqual (response .status_code , 200 )
You can’t perform that action at this time.
0 commit comments