Merge pull request #12117 from edx/ned/fix-mako-encoding
Fix encoding of Django-called Mako files to be safe
This commit is contained in:
@@ -48,6 +48,8 @@ class MakoLoader(object):
|
|||||||
module_directory=self.module_directory,
|
module_directory=self.module_directory,
|
||||||
input_encoding='utf-8',
|
input_encoding='utf-8',
|
||||||
output_encoding='utf-8',
|
output_encoding='utf-8',
|
||||||
|
default_filters=['decode.utf8'],
|
||||||
|
encoding_errors='replace',
|
||||||
uri=template_name)
|
uri=template_name)
|
||||||
return template, None
|
return template, None
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -19,8 +19,6 @@ from edxmako.middleware import get_template_request_context
|
|||||||
from edxmako.shortcuts import marketing_link
|
from edxmako.shortcuts import marketing_link
|
||||||
from mako.template import Template as MakoTemplate
|
from mako.template import Template as MakoTemplate
|
||||||
|
|
||||||
DJANGO_VARIABLES = ['output_encoding', 'encoding_errors']
|
|
||||||
|
|
||||||
# TODO: We should make this a Django Template subclass that simply has the MakoTemplate inside of it? (Intead of inheriting from MakoTemplate)
|
# TODO: We should make this a Django Template subclass that simply has the MakoTemplate inside of it? (Intead of inheriting from MakoTemplate)
|
||||||
|
|
||||||
|
|
||||||
@@ -34,9 +32,7 @@ class Template(MakoTemplate):
|
|||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
"""Overrides base __init__ to provide django variable overrides"""
|
"""Overrides base __init__ to provide django variable overrides"""
|
||||||
if not kwargs.get('no_django', False):
|
if not kwargs.get('no_django', False):
|
||||||
overrides = {k: getattr(edxmako, k, None) for k in DJANGO_VARIABLES}
|
kwargs['lookup'] = edxmako.LOOKUP['main']
|
||||||
overrides['lookup'] = edxmako.LOOKUP['main']
|
|
||||||
kwargs.update(overrides)
|
|
||||||
super(Template, self).__init__(*args, **kwargs)
|
super(Template, self).__init__(*args, **kwargs)
|
||||||
|
|
||||||
def render(self, context_instance):
|
def render(self, context_instance):
|
||||||
|
|||||||
Reference in New Issue
Block a user