Teach edx-mako to force csrf_tokens to unicode (from smart_strings)

This commit is contained in:
Calen Pennington
2015-02-27 09:48:42 -05:00
parent 780792134a
commit cbcb0ee8ab
2 changed files with 8 additions and 1 deletions

View File

@@ -122,6 +122,13 @@ def render_to_string(template_name, dictionary, context=None, namespace='main'):
context_dictionary.update(item)
if context:
context_dictionary.update(context)
# "Fix" CSRF token by evaluating the lazy object
KEY_CSRF_TOKENS = ('csrf_token', 'csrf')
for key in KEY_CSRF_TOKENS:
if key in context_dictionary:
context_dictionary[key] = unicode(context_dictionary[key])
# fetch and render template
template = lookup_template(namespace, template_name)
return template.render_unicode(**context_dictionary)

View File

@@ -975,7 +975,7 @@ def xblock_view(request, course_id, usage_id, view_name):
return JsonResponse({
'html': fragment.content,
'resources': hashed_resources.items(),
'csrf_token': str(csrf(request)['csrf_token']),
'csrf_token': unicode(csrf(request)['csrf_token']),
})