Skip to content

Commit c297ad7

Browse files
HiPhishjoshuadavidthomas
authored andcommitted
Use correct context when rendering navigation
1 parent a0a2860 commit c297ad7

File tree

3 files changed

+20
-4
lines changed

3 files changed

+20
-4
lines changed

src/django_simple_nav/jinja2/django_simple_nav.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,12 @@ def django_simple_nav(
2929
template_name = cast(Nav, nav).template_name
3030
if template_name is None:
3131
raise TemplateRuntimeError("Navigation object has no template")
32-
items = cast(Nav, nav).get_items(context["request"])
32+
request = context['request']
33+
new_context = {
34+
'request': request,
35+
**cast(Nav, nav).get_context_data(request)
36+
}
3337
except Exception as err:
3438
raise TemplateRuntimeError(str(err)) from err
3539

36-
return loader.load(context.environment, template_name).render(items=items)
40+
return loader.load(context.environment, template_name).render(new_context)

tests/jinja2/tests/dummy_nav.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
{% for item in items recursive %}
33
<li>
44
<a href="{{ item.url }}">{{ item.title }}</a>
5-
{% if item.items %}
5+
{% if item['items'] %}
66
<ul>
7-
{{ loop(item.items) }}
7+
{{ loop(item['items']) }}
88
</ul>
99
{% endif %}
1010
</li>

tests/test_jinja.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,3 +131,15 @@ def test_request_not_in_context():
131131

132132
with pytest.raises(TemplateRuntimeError):
133133
template.render()
134+
135+
136+
def test_invalid_request():
137+
class InvalidRequest:
138+
...
139+
140+
template = environment.from_string(
141+
"{{ django_simple_nav('tests.navs.DummyNav') }}"
142+
)
143+
144+
with pytest.raises(TemplateRuntimeError):
145+
template.render({"request": InvalidRequest()})

0 commit comments

Comments
 (0)