@@ -17,45 +17,61 @@ def sql_log_middleware(get_response):
1717 def sql_log (request ):
1818 response = get_response (request )
1919 for q in connection .queries :
20- if re .match (' (update|insert)' , q [' sql' ], re .IGNORECASE ):
21- log (q [' sql' ])
20+ if re .match (" (update|insert)" , q [" sql" ], re .IGNORECASE ):
21+ log (q [" sql" ])
2222 return response
23+
2324 return sql_log
2425
26+
2527class SMTPExceptionMiddleware (object ):
2628 def __init__ (self , get_response ):
2729 self .get_response = get_response
30+
2831 def __call__ (self , request ):
2932 return self .get_response (request )
33+
3034 def process_exception (self , request , exception ):
3135 if isinstance (exception , smtplib .SMTPException ):
3236 (extype , value , tb ) = log_smtp_exception (exception )
33- return render (request , 'email_failed.html' ,
34- {'exception' : extype , 'args' : value , 'traceback' : "" .join (tb )} )
37+ return render (
38+ request ,
39+ "email_failed.html" ,
40+ {"exception" : extype , "args" : value , "traceback" : "" .join (tb )},
41+ )
3542 return None
3643
44+
3745class Utf8ExceptionMiddleware (object ):
3846 def __init__ (self , get_response ):
3947 self .get_response = get_response
48+
4049 def __call__ (self , request ):
4150 return self .get_response (request )
51+
4252 def process_exception (self , request , exception ):
4353 if isinstance (exception , OperationalError ):
4454 extype , e , tb = exc_parts ()
4555 if e .args [0 ] == 1366 :
4656 log ("Database 4-byte utf8 exception: %s: %s" % (extype , e ))
47- return render (request , 'utf8_4byte_failed.html' ,
48- {'exception' : extype , 'args' : e .args , 'traceback' : "" .join (tb )} )
57+ return render (
58+ request ,
59+ "utf8_4byte_failed.html" ,
60+ {"exception" : extype , "args" : e .args , "traceback" : "" .join (tb )},
61+ )
4962 return None
5063
64+
5165def redirect_trailing_period_middleware (get_response ):
5266 def redirect_trailing_period (request ):
5367 response = get_response (request )
5468 if response .status_code == 404 and request .path .endswith ("." ):
5569 return HttpResponsePermanentRedirect (request .path .rstrip ("." ))
5670 return response
71+
5772 return redirect_trailing_period
5873
74+
5975def unicode_nfkc_normalization_middleware (get_response ):
6076 def unicode_nfkc_normalization (request ):
6177 """Do Unicode NFKC normalization to turn ligatures into individual characters.
@@ -65,9 +81,21 @@ def unicode_nfkc_normalization(request):
6581 There are probably other elements of a request which may need this normalization
6682 too, but let's put that in as it comes up, rather than guess ahead.
6783 """
68- request .META ["PATH_INFO" ] = unicodedata .normalize ('NFKC' , request .META ["PATH_INFO" ])
69- request .path_info = unicodedata .normalize ('NFKC' , request .path_info )
84+ request .META ["PATH_INFO" ] = unicodedata .normalize (
85+ "NFKC" , request .META ["PATH_INFO" ]
86+ )
87+ request .path_info = unicodedata .normalize ("NFKC" , request .path_info )
7088 response = get_response (request )
7189 return response
90+
7291 return unicode_nfkc_normalization
73-
92+
93+
94+ def is_authenticated_header_middleware (get_response ):
95+ """Middleware to add an is-authenticated header to the response"""
96+ def add_header (request ):
97+ response = get_response (request )
98+ response ["X-Datatracker-Is-Authenticated" ] = "yes" if request .user .is_authenticated else "no"
99+ return response
100+
101+ return add_header
0 commit comments