Changed from old-style to new-style middleware.
- Legacy-Id: 12824
This commit is contained in:
parent
a1606e8f7d
commit
7f607c51d2
|
@ -9,24 +9,21 @@ import re
|
|||
import smtplib
|
||||
import unicodedata
|
||||
|
||||
# old-style middleware
|
||||
class SQLLogMiddleware(object):
|
||||
def process_response(self, request, response):
|
||||
for q in connection.queries:
|
||||
if re.match('(update|insert)', q['sql'], re.IGNORECASE):
|
||||
log(q['sql'])
|
||||
return response
|
||||
|
||||
# new-style middleware
|
||||
def sql_log_middleware_factory(get_response):
|
||||
def sql_log_middleware(request):
|
||||
def sql_log_middleware(get_response):
|
||||
def sql_log(request):
|
||||
response = get_response(request)
|
||||
for q in connection.queries:
|
||||
if re.match('(update|insert)', q['sql'], re.IGNORECASE):
|
||||
log(q['sql'])
|
||||
return response
|
||||
return sql_log
|
||||
|
||||
class SMTPExceptionMiddleware(object):
|
||||
def __init__(self, get_response):
|
||||
self.get_response = get_response
|
||||
def __call__(self, request):
|
||||
return self.get_response(request)
|
||||
def process_exception(self, request, exception):
|
||||
if isinstance(exception, smtplib.SMTPException):
|
||||
(extype, value, tb) = log_smtp_exception(exception)
|
||||
|
@ -34,19 +31,16 @@ class SMTPExceptionMiddleware(object):
|
|||
{'exception': extype, 'args': value, 'traceback': "".join(tb)} )
|
||||
return None
|
||||
|
||||
def smtp_exception_middleware_factory(get_response):
|
||||
def smtp_exception_middleware(request):
|
||||
def redirect_trailing_period_middleware(get_response):
|
||||
def redirect_trailing_period(request):
|
||||
response = get_response(request)
|
||||
return response
|
||||
|
||||
class RedirectTrailingPeriod(object):
|
||||
def process_response(self, request, response):
|
||||
if response.status_code == 404 and request.path.endswith("."):
|
||||
return HttpResponsePermanentRedirect(request.path.rstrip("."))
|
||||
return response
|
||||
return redirect_trailing_period
|
||||
|
||||
class UnicodeNfkcNormalization(object):
|
||||
def process_request(self, request):
|
||||
def unicode_nfkc_normalization_middleware(get_response):
|
||||
def unicode_nfkc_normalization(request):
|
||||
"""Do Unicode NFKC normalization to turn ligatures into individual characters.
|
||||
This was prompted by somebody actually requesting an url for /wg/ipfix/charter
|
||||
where the 'fi' was composed of an \ufb01 ligature...
|
||||
|
@ -56,4 +50,7 @@ class UnicodeNfkcNormalization(object):
|
|||
"""
|
||||
request.META["PATH_INFO"] = unicodedata.normalize('NFKC', request.META["PATH_INFO"])
|
||||
request.path_info = unicodedata.normalize('NFKC', request.path_info)
|
||||
return None
|
||||
response = get_response(request)
|
||||
return response
|
||||
return unicode_nfkc_normalization
|
||||
|
|
@ -51,6 +51,7 @@ ADMINS = (
|
|||
)
|
||||
|
||||
PASSWORD_HASHERS = [
|
||||
'django.contrib.auth.hashers.Argon2PasswordHasher',
|
||||
'django.contrib.auth.hashers.BCryptSHA256PasswordHasher',
|
||||
'django.contrib.auth.hashers.PBKDF2PasswordHasher',
|
||||
'django.contrib.auth.hashers.SHA1PasswordHasher',
|
||||
|
@ -79,7 +80,7 @@ DATABASES = {
|
|||
'ENGINE': 'django.db.backends.mysql',
|
||||
'USER': 'ietf',
|
||||
#'PASSWORD': 'ietf',
|
||||
#'OPTIONS': {},
|
||||
'OPTIONS': {'sql_mode': 'STRICT_TRANS_TABLES', },
|
||||
},
|
||||
}
|
||||
|
||||
|
@ -261,7 +262,7 @@ if DEBUG:
|
|||
TEMPLATES[0]['OPTIONS']['string_if_invalid'] = "** No value found for '%s' **"
|
||||
|
||||
|
||||
MIDDLEWARE_CLASSES = (
|
||||
MIDDLEWARE = (
|
||||
'django.middleware.csrf.CsrfViewMiddleware',
|
||||
'django.middleware.common.CommonMiddleware',
|
||||
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||
|
@ -269,11 +270,11 @@ MIDDLEWARE_CLASSES = (
|
|||
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
|
||||
'django.contrib.messages.middleware.MessageMiddleware',
|
||||
'django.middleware.http.ConditionalGetMiddleware',
|
||||
'ietf.middleware.SQLLogMiddleware',
|
||||
'ietf.middleware.sql_log_middleware',
|
||||
'ietf.middleware.SMTPExceptionMiddleware',
|
||||
'ietf.middleware.RedirectTrailingPeriod',
|
||||
'ietf.middleware.redirect_trailing_period_middleware',
|
||||
'django.middleware.clickjacking.XFrameOptionsMiddleware',
|
||||
'ietf.middleware.UnicodeNfkcNormalization',
|
||||
'ietf.middleware.unicode_nfkc_normalization_middleware',
|
||||
)
|
||||
|
||||
ROOT_URLCONF = 'ietf.urls'
|
||||
|
@ -298,6 +299,7 @@ INSTALLED_APPS = (
|
|||
'django.contrib.sites',
|
||||
'django.contrib.staticfiles',
|
||||
# External apps
|
||||
'anora',
|
||||
'bootstrap3',
|
||||
'django_markup',
|
||||
'django_password_strength',
|
||||
|
@ -674,7 +676,7 @@ SELENIUM_TESTS_ONLY = False
|
|||
# Set debug apps in settings_local.DEV_APPS
|
||||
|
||||
DEV_APPS = ()
|
||||
DEV_MIDDLEWARE_CLASSES = ()
|
||||
DEV_MIDDLEWARE = ()
|
||||
|
||||
# django-debug-toolbar and the debug listing of sql queries at the bottom of
|
||||
# each page when in dev mode can overlap in functionality, and can slow down
|
||||
|
@ -798,7 +800,7 @@ for app in INSTALLED_APPS:
|
|||
|
||||
# Add DEV_APPS to INSTALLED_APPS
|
||||
INSTALLED_APPS += DEV_APPS
|
||||
MIDDLEWARE_CLASSES += DEV_MIDDLEWARE_CLASSES
|
||||
MIDDLEWARE += DEV_MIDDLEWARE
|
||||
TEMPLATES[0]['OPTIONS']['context_processors'] += DEV_TEMPLATE_CONTEXT_PROCESSORS
|
||||
|
||||
|
||||
|
|
|
@ -50,6 +50,6 @@ MEDIA_URL = '/test/media/'
|
|||
PHOTOS_DIR = MEDIA_ROOT + PHOTOS_DIRNAME # pyflakes:ignore
|
||||
|
||||
# Undo any developer-dependent middleware when running the tests
|
||||
MIDDLEWARE_CLASSES = [ c for c in MIDDLEWARE_CLASSES if not c in DEV_MIDDLEWARE_CLASSES ] # pyflakes:ignore
|
||||
MIDDLEWARE = [ c for c in MIDDLEWARE if not c in DEV_MIDDLEWARE ] # pyflakes:ignore
|
||||
|
||||
TEMPLATES[0]['OPTIONS']['context_processors'] = [ p for p in TEMPLATES[0]['OPTIONS']['context_processors'] if not p in DEV_TEMPLATE_CONTEXT_PROCESSORS ] # pyflakes:ignore
|
||||
|
|
|
@ -122,11 +122,13 @@ class TemplateCoverageLoader(BaseLoader):
|
|||
raise TemplateDoesNotExist(template_name)
|
||||
load_template_source.is_usable = True
|
||||
|
||||
class RecordUrlsMiddleware(object):
|
||||
def process_request(self, request):
|
||||
def record_urls_middleware(get_response):
|
||||
def record_urls(request):
|
||||
global url_coverage_collection, visited_urls
|
||||
if url_coverage_collection == True:
|
||||
visited_urls.add(request.path)
|
||||
return get_response(request)
|
||||
return record_urls
|
||||
|
||||
def get_url_patterns(module, apps=None):
|
||||
def include(name):
|
||||
|
@ -403,7 +405,7 @@ class IetfTestRunner(DiscoverRunner):
|
|||
|
||||
settings.TEMPLATES[0]['OPTIONS']['loaders'] = ('ietf.utils.test_runner.TemplateCoverageLoader',) + settings.TEMPLATES[0]['OPTIONS']['loaders']
|
||||
|
||||
settings.MIDDLEWARE_CLASSES = ('ietf.utils.test_runner.RecordUrlsMiddleware',) + tuple(settings.MIDDLEWARE_CLASSES)
|
||||
settings.MIDDLEWARE = ('ietf.utils.test_runner.record_urls_middleware',) + tuple(settings.MIDDLEWARE)
|
||||
url_coverage_collection = True
|
||||
|
||||
self.code_coverage_checker = settings.TEST_CODE_COVERAGE_CHECKER
|
||||
|
|
Loading…
Reference in a new issue