Loading django/utils/log.py +4 −1 Original line number Diff line number Diff line from __future__ import unicode_literals import logging import sys import warnings Loading @@ -6,6 +8,7 @@ from django.conf import settings from django.core import mail from django.core.mail import get_connection from django.utils.deprecation import RemovedInNextVersionWarning from django.utils.encoding import force_text from django.utils.module_loading import import_string from django.views.debug import ExceptionReporter, get_exception_reporter_filter Loading Loading @@ -106,7 +109,7 @@ class AdminEmailHandler(logging.Handler): record.getMessage() ) filter = get_exception_reporter_filter(request) request_repr = '\n{0}'.format(filter.get_request_repr(request)) request_repr = '\n{0}'.format(force_text(filter.get_request_repr(request))) except Exception: subject = '%s: %s' % ( record.levelname, Loading docs/releases/1.7.1.txt +3 −0 Original line number Diff line number Diff line Loading @@ -97,3 +97,6 @@ Bugfixes possible to import arbitrary packages from the Python path. This was not considered a security issue because ``admindocs`` is only accessible to staff users (:ticket:`23601`). * Fixed ``UnicodeDecodeError`` crash in ``AdminEmailHandler`` with non-ASCII characters in the request (:ticket:`23593`). tests/logging_tests/tests.py +21 −0 Original line number Diff line number Diff line # -*- coding:utf-8 -*- from __future__ import unicode_literals import logging Loading Loading @@ -319,6 +320,26 @@ class AdminEmailHandlerTest(TestCase): mail.mail_admins = orig_mail_admins admin_email_handler.email_backend = orig_email_backend @override_settings( ADMINS=(('whatever admin', 'admin@example.com'),), ) def test_emit_non_ascii(self): """ #23593 - AdminEmailHandler should allow Unicode characters in the request. """ handler = self.get_admin_email_handler(self.logger) record = self.logger.makeRecord('name', logging.ERROR, 'function', 'lno', 'message', None, None) rf = RequestFactory() url_path = '/º' record.request = rf.get(url_path) handler.emit(record) self.assertEqual(len(mail.outbox), 1) msg = mail.outbox[0] self.assertEqual(msg.to, ['admin@example.com']) self.assertEqual(msg.subject, "[Django] ERROR (EXTERNAL IP): message") self.assertIn("path:%s" % url_path, msg.body) class SettingsConfigTest(AdminScriptTestCase): """ Loading Loading
django/utils/log.py +4 −1 Original line number Diff line number Diff line from __future__ import unicode_literals import logging import sys import warnings Loading @@ -6,6 +8,7 @@ from django.conf import settings from django.core import mail from django.core.mail import get_connection from django.utils.deprecation import RemovedInNextVersionWarning from django.utils.encoding import force_text from django.utils.module_loading import import_string from django.views.debug import ExceptionReporter, get_exception_reporter_filter Loading Loading @@ -106,7 +109,7 @@ class AdminEmailHandler(logging.Handler): record.getMessage() ) filter = get_exception_reporter_filter(request) request_repr = '\n{0}'.format(filter.get_request_repr(request)) request_repr = '\n{0}'.format(force_text(filter.get_request_repr(request))) except Exception: subject = '%s: %s' % ( record.levelname, Loading
docs/releases/1.7.1.txt +3 −0 Original line number Diff line number Diff line Loading @@ -97,3 +97,6 @@ Bugfixes possible to import arbitrary packages from the Python path. This was not considered a security issue because ``admindocs`` is only accessible to staff users (:ticket:`23601`). * Fixed ``UnicodeDecodeError`` crash in ``AdminEmailHandler`` with non-ASCII characters in the request (:ticket:`23593`).
tests/logging_tests/tests.py +21 −0 Original line number Diff line number Diff line # -*- coding:utf-8 -*- from __future__ import unicode_literals import logging Loading Loading @@ -319,6 +320,26 @@ class AdminEmailHandlerTest(TestCase): mail.mail_admins = orig_mail_admins admin_email_handler.email_backend = orig_email_backend @override_settings( ADMINS=(('whatever admin', 'admin@example.com'),), ) def test_emit_non_ascii(self): """ #23593 - AdminEmailHandler should allow Unicode characters in the request. """ handler = self.get_admin_email_handler(self.logger) record = self.logger.makeRecord('name', logging.ERROR, 'function', 'lno', 'message', None, None) rf = RequestFactory() url_path = '/º' record.request = rf.get(url_path) handler.emit(record) self.assertEqual(len(mail.outbox), 1) msg = mail.outbox[0] self.assertEqual(msg.to, ['admin@example.com']) self.assertEqual(msg.subject, "[Django] ERROR (EXTERNAL IP): message") self.assertIn("path:%s" % url_path, msg.body) class SettingsConfigTest(AdminScriptTestCase): """ Loading