wagtail/wagtail/wagtailadmin/modal_workflow.py
Tim Heap a0af3d6685 Ensure absolute_import, unicode_literals imported in all files
Drone will now check that

    from __future__ absolute_import, unicode_literals

is part of every Python source file, to ensure a consistent experience
across all versions of Python.

See #2392 for an instance where missing `unicode_literals` was causing
problems.

Add missing absolute_import, unicode_literals to all files

Explicitly ensure strings are of the correct types

Now that unicode_literals is in every file, some things that used to
be py2 `str`s were now `unicode` instead. This caused issues with
generated class / function names, which must be `str` in all versions of
Python. This means bytes in py2, and unicode in py3. A test also checked
for the incorrect type of SafeString. HTML content should always be
unicode, so this has been fixed.
2016-04-03 13:11:48 +03:00

26 lines
878 B
Python

from __future__ import absolute_import, unicode_literals
import json
from django.http import HttpResponse
from django.template.loader import render_to_string
def render_modal_workflow(request, html_template, js_template, template_vars=None):
""""
Render a response consisting of an HTML chunk and a JS onload chunk
in the format required by the modal-workflow framework.
"""
response_keyvars = []
if html_template:
html = render_to_string(html_template, template_vars or {}, request=request)
response_keyvars.append("'html': %s" % json.dumps(html))
if js_template:
js = render_to_string(js_template, template_vars or {}, request=request)
response_keyvars.append("'onload': %s" % js)
response_text = "{%s}" % ','.join(response_keyvars)
return HttpResponse(response_text, content_type="text/javascript")