templates: pass request in context whenever it's available (#21137)

This commit is contained in:
Frédéric Péters 2018-01-12 10:29:49 +01:00
parent 644619cea4
commit 698a013d50
5 changed files with 37 additions and 1 deletions

View File

@ -0,0 +1,14 @@
{% extends "qommon/forms/widget.html" %}
{% load qommon %}
{% block widget-control %}
<!-- TEST TEMPLATE -->
<!-- backoffice: {{ request.quixote_request.is_in_backoffice|pprint }} -->
<select id="form_{{widget.name}}" name="{{widget.name}}"
{% for attr in widget.attrs.items %}{{attr.0}}="{{attr.1}}"{% endfor %}>
<option value="">---</option>
{% for option in widget.get_options %}
<option{% for attr in option.attrs.items %} {{attr.0}}="{{attr.1}}"{% endfor %}
>{{ option.description }}</option>
{% endfor %}
</select>
{% endblock %}

View File

@ -3914,3 +3914,21 @@ def test_resubmit(pub):
resp = resp.click('new draft')
resp = resp.follow()
assert resp.forms[1]['f2'].value == 'XXX'
def test_form_custom_select_template(pub):
formdef = create_formdef()
formdef.fields = [
fields.ItemField(id='1', label='select', type='item',
required=True,
varname='foo', items=['Foo', 'Bar', 'Baz'])]
formdef.store()
formdef.data_class().wipe()
resp = get_app(pub).get('/test/')
assert not 'TEST TEMPLATE' in resp.body
formdef.fields[0].extra_css_class = 'template-test'
formdef.store()
resp = get_app(pub).get('/test/')
assert 'TEST TEMPLATE' in resp.body
# make sure request is available in context
assert '<!-- backoffice: False -->' in resp.body

View File

@ -94,6 +94,8 @@ def create_temporary_pub(sql_mode=False):
return pub
os.mkdir(pub.app_dir)
os.symlink(os.path.join(os.path.dirname(__file__), 'templates'),
os.path.join(pub.app_dir, 'templates'))
fd = file(os.path.join(pub.app_dir, 'site-options.cfg'), 'w')
fd.write('[wscall-secrets]\n')
fd.write('idp.example.net = BAR\n')

View File

@ -415,7 +415,8 @@ def decorate(body, response):
def render(template_name, context):
return htmltext(render_to_string(template_name, context).encode('utf-8'))
request = getattr(get_request(), 'django_request', None)
return htmltext(render_to_string(template_name, context, request=request).encode('utf-8'))
class TemplateError(Exception):

View File

@ -94,6 +94,7 @@ TEMPLATES = [
"django.template.context_processors.debug",
"django.template.context_processors.i18n",
"django.template.context_processors.media",
"django.template.context_processors.request",
"django.template.context_processors.static",
"django.template.context_processors.tz",
"django.contrib.messages.context_processors.messages",