Code

Ticket #3171: inclusion_tag.diff

File inclusion_tag.diff, 1.2 KB (added by anonymous, 7 years ago)
Line 
1Index: __init__.py
2===================================================================
3--- __init__.py (revision 4088)
4+++ __init__.py (working copy)
5@@ -845,7 +845,7 @@
6         self.tag(func.__name__, compile_func)
7         return func
8 
9-    def inclusion_tag(self, file_name, context_class=Context, takes_context=False):
10+    def inclusion_tag(self, template_name, context_class=Context, takes_context=False, inclusion_params=None):
11         def dec(func):
12             params, xx, xxx, defaults = getargspec(func)
13             if takes_context:
14@@ -865,6 +865,16 @@
15                     else:
16                         args = resolved_vars
17 
18+                    if inclusion_params:
19+                        c, i = {}, 0
20+                        for arg in args:
21+                            c[params[i]] = arg
22+                            i = i + 1
23+                        resolved_params = [resolve_variable(var, c) for var in inclusion_params]
24+                        file_name = template_name % tuple(resolved_params)
25+                    else:
26+                        file_name = template_name
27+
28                     dict = func(*args)
29 
30                     if not getattr(self, 'nodelist', False):