@@ -15,9 +15,8 @@ async def middleware(request):
15
15
with context .request_context (request ):
16
16
try :
17
17
response = await get_response (request )
18
- _remove_dangling_login (
19
- request , response , sync_to_async (_session_check )
20
- )
18
+ if _should_check_dangling_login (request , response ):
19
+ await _acheck_dangling_login (request )
21
20
return response
22
21
except ImmediateHttpResponse as e :
23
22
return e .response
@@ -28,32 +27,37 @@ def middleware(request):
28
27
with context .request_context (request ):
29
28
try :
30
29
response = get_response (request )
31
- _remove_dangling_login (request , response , _session_check )
30
+ if _should_check_dangling_login (request , response ):
31
+ _check_dangling_login (request )
32
32
return response
33
33
except ImmediateHttpResponse as e :
34
34
return e .response
35
35
36
36
return middleware
37
37
38
38
39
- def _remove_dangling_login (request , response , session_check ):
39
+ def _should_check_dangling_login (request , response ):
40
40
content_type = response .headers .get ("content-type" )
41
41
if content_type :
42
42
content_type = content_type .partition (";" )[0 ]
43
43
if content_type and content_type != "text/html" :
44
- return
44
+ return False
45
45
if request .path .startswith (settings .STATIC_URL ) or request .path in [
46
46
"/favicon.ico" ,
47
47
"/robots.txt" ,
48
48
"/humans.txt" ,
49
49
]:
50
- return
50
+ return False
51
51
if response .status_code // 100 != 2 :
52
- return
53
- session_check ( request )
52
+ return False
53
+ return True
54
54
55
55
56
- def _session_check (request ):
56
+ def _check_dangling_login (request ):
57
57
if not getattr (request , "_account_login_accessed" , False ):
58
58
if "account_login" in request .session :
59
59
request .session .pop ("account_login" )
60
+
61
+
62
+ async def _acheck_dangling_login (request ):
63
+ await sync_to_async (_check_dangling_login )(request )
0 commit comments