File tree 7 files changed +61
-0
lines changed
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 1
1
from django .http import HttpResponseBadRequest , JsonResponse
2
2
from django .template .loader import render_to_string
3
3
4
+ from debug_toolbar ._compat import login_not_required
4
5
from debug_toolbar .decorators import render_with_toolbar_language , require_show_toolbar
5
6
from debug_toolbar .panels .history .forms import HistoryStoreForm
6
7
from debug_toolbar .toolbar import DebugToolbar
7
8
8
9
10
+ @login_not_required
9
11
@require_show_toolbar
10
12
@render_with_toolbar_language
11
13
def history_sidebar (request ):
@@ -37,6 +39,7 @@ def history_sidebar(request):
37
39
return HttpResponseBadRequest ("Form errors" )
38
40
39
41
42
+ @login_not_required
40
43
@require_show_toolbar
41
44
@render_with_toolbar_language
42
45
def history_refresh (request ):
Original file line number Diff line number Diff line change 2
2
from django .template .loader import render_to_string
3
3
from django .views .decorators .csrf import csrf_exempt
4
4
5
+ from debug_toolbar ._compat import login_not_required
5
6
from debug_toolbar .decorators import render_with_toolbar_language , require_show_toolbar
6
7
from debug_toolbar .forms import SignedDataForm
7
8
from debug_toolbar .panels .sql .forms import SQLSelectForm
@@ -17,6 +18,7 @@ def get_signed_data(request):
17
18
18
19
19
20
@csrf_exempt
21
+ @login_not_required
20
22
@require_show_toolbar
21
23
@render_with_toolbar_language
22
24
def sql_select (request ):
@@ -47,6 +49,7 @@ def sql_select(request):
47
49
48
50
49
51
@csrf_exempt
52
+ @login_not_required
50
53
@require_show_toolbar
51
54
@render_with_toolbar_language
52
55
def sql_explain (request ):
@@ -86,6 +89,7 @@ def sql_explain(request):
86
89
87
90
88
91
@csrf_exempt
92
+ @login_not_required
89
93
@require_show_toolbar
90
94
@render_with_toolbar_language
91
95
def sql_profile (request ):
Original file line number Diff line number Diff line change 5
5
from django .template .loader import render_to_string
6
6
from django .utils .html import format_html , mark_safe
7
7
8
+ from debug_toolbar ._compat import login_not_required
8
9
from debug_toolbar .decorators import render_with_toolbar_language , require_show_toolbar
9
10
10
11
12
+ @login_not_required
11
13
@require_show_toolbar
12
14
@render_with_toolbar_language
13
15
def template_source (request ):
Original file line number Diff line number Diff line change 2
2
from django .utils .html import escape
3
3
from django .utils .translation import gettext as _
4
4
5
+ from debug_toolbar ._compat import login_not_required
5
6
from debug_toolbar .decorators import render_with_toolbar_language , require_show_toolbar
6
7
from debug_toolbar .toolbar import DebugToolbar
7
8
8
9
10
+ @login_not_required
9
11
@require_show_toolbar
10
12
@render_with_toolbar_language
11
13
def render_panel (request ):
Original file line number Diff line number Diff line change @@ -11,6 +11,7 @@ Pending
11
11
`Google Summer of Code Project 2024
12
12
<https://summerofcode.withgoogle.com/programs/2024/projects/iXVvyGYp> `__.
13
13
* Added Django 5.1 to the CI matrix.
14
+ * Added support for the ``LoginRequiredMiddleware `` introduced in Django 5.1.
14
15
* Support select and explain buttons for ``UNION `` queries on PostgreSQL.
15
16
* Fixed internal toolbar requests being instrumented if the Django setting
16
17
``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