git.ithinksw.org
/
philo.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
3b0bf18
)
Fixed the context variable leak in the blockcontainer tag.
author
melinath
<stephen.r.burrows@gmail.com>
Wed, 9 Jun 2010 23:47:06 +0000
(19:47 -0400)
committer
melinath
<stephen.r.burrows@gmail.com>
Wed, 9 Jun 2010 23:47:06 +0000
(19:47 -0400)
templatetags/containers.py
patch
|
blob
|
history
diff --git
a/templatetags/containers.py
b/templatetags/containers.py
index
490b56b
..
25156f2
100644
(file)
--- a/
templatetags/containers.py
+++ b/
templatetags/containers.py
@@
-41,12
+41,18
@@
class ContainerNode(template.Node):
if container_content:
if self.as_var is None:
self.as_var = self.name
if container_content:
if self.as_var is None:
self.as_var = self.name
+
+ #make a new context
context.push()
context[self.as_var] = container_content
context.push()
context[self.as_var] = container_content
- return nodelist_main.render(context)
+ nodelist = template.NodeList()
+ for node in self.nodelist_main:
+ nodelist.append(node.render(context))
+ context.pop()
+ return nodelist.render(context)
- if nodelist_empty is not None:
- return nodelist_empty.render(context)
+ if
self.
nodelist_empty is not None:
+ return
self.
nodelist_empty.render(context)
return ''
return ''
@@
-115,7
+121,7
@@
def do_container(parser, token):
parser.delete_first_token()
else:
nodelist_empty = None
parser.delete_first_token()
else:
nodelist_empty = None
- return
Block
ContainerNode(name, references, as_var, nodelist_main, nodelist_empty)
+ return ContainerNode(name, references, as_var, nodelist_main, nodelist_empty)
else: # error
raise template.TemplateSyntaxError('"%s" template tag provided without arguments (at least one required)' % tag)
else: # error
raise template.TemplateSyntaxError('"%s" template tag provided without arguments (at least one required)' % tag)