Permalink
Browse files

Fixed #4563 -- Context.pop/push/update return the top-level dictionar…

…y (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
  • Loading branch information...
1 parent a88ca12 commit 67373009e053aca469f857be99158564fc9b42f0 @malcolmt malcolmt committed Dec 2, 2007
@@ -23,12 +23,14 @@ def __iter__(self):
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 @@ def get(self, key, otherwise=None):
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.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,
}
#################################

0 comments on commit 6737300

Please sign in to comment.