Fixed #4563 -- Context.pop/push/update return the top-level dictionary (the new
one for push() and update(), the one removed for pop()). Based on a patch from Brian Harring. git-svn-id: http://code.djangoproject.com/svn/django/trunk@6854 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
a88ca126fc
commit
67373009e0
|
@ -23,12 +23,14 @@ class Context(object):
|
|||
yield d
|
||||
|
||||
def push(self):
|
||||
self.dicts = [{}] + self.dicts
|
||||
d = {}
|
||||
self.dicts = [d] + self.dicts
|
||||
return d
|
||||
|
||||
def pop(self):
|
||||
if len(self.dicts) == 1:
|
||||
raise ContextPopException
|
||||
del self.dicts[0]
|
||||
return self.dicts.pop(0)
|
||||
|
||||
def __setitem__(self, key, value):
|
||||
"Set a variable in the current context"
|
||||
|
@ -62,6 +64,7 @@ class Context(object):
|
|||
def update(self, other_dict):
|
||||
"Like dict.update(). Pushes an entire dictionary's keys and values onto the context."
|
||||
self.dicts = [other_dict] + self.dicts
|
||||
return other_dict
|
||||
|
||||
# This is a function rather than module-level procedural code because we only
|
||||
# want it to execute if somebody uses RequestContext.
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
# coding: utf-8
|
||||
|
||||
context_tests = r"""
|
||||
>>> from django.template import Context
|
||||
>>> c = Context({'a': 1, 'b': 'xyzzy'})
|
||||
>>> c['a']
|
||||
1
|
||||
>>> c.push()
|
||||
{}
|
||||
>>> c['a'] = 2
|
||||
>>> c['a']
|
||||
2
|
||||
>>> c.pop()
|
||||
{'a': 2}
|
||||
>>> c['a']
|
||||
1
|
||||
"""
|
||||
|
|
@ -18,11 +18,13 @@ from django.utils.safestring import mark_safe
|
|||
from django.utils.tzinfo import LocalTimezone
|
||||
|
||||
from unicode import unicode_tests
|
||||
from context import context_tests
|
||||
import filters
|
||||
|
||||
# Some other tests we would like to run
|
||||
__test__ = {
|
||||
'unicode': unicode_tests,
|
||||
'context': context_tests,
|
||||
}
|
||||
|
||||
#################################
|
||||
|
|
Loading…
Reference in New Issue