Fix broken tests due to changes in r15591 by updating the test store_rendered_templates signal handler.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@15600 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Chris Beaven 2011-02-21 10:12:23 +00:00
parent 01c42cbb99
commit 4419f5fc00
2 changed files with 30 additions and 1 deletions

View File

@ -1,5 +1,7 @@
from copy import copy
from django.core.exceptions import ImproperlyConfigured from django.core.exceptions import ImproperlyConfigured
from django.utils.importlib import import_module from django.utils.importlib import import_module
from django.http import HttpRequest
# Cache of actual callables. # Cache of actual callables.
_standard_context_processors = None _standard_context_processors = None
@ -17,6 +19,11 @@ class BaseContext(object):
dict_ = dict_ or {} dict_ = dict_ or {}
self.dicts = [dict_] self.dicts = [dict_]
def __copy__(self):
duplicate = self._new()
duplicate.dicts = [dict_ for dict_ in self.dicts]
return duplicate
def __repr__(self): def __repr__(self):
return repr(self.dicts) return repr(self.dicts)
@ -24,6 +31,9 @@ class BaseContext(object):
for d in reversed(self.dicts): for d in reversed(self.dicts):
yield d yield d
def _new(self):
return self.__class__()
def push(self): def push(self):
d = {} d = {}
self.dicts.append(d) self.dicts.append(d)
@ -73,6 +83,16 @@ class Context(BaseContext):
self.render_context = RenderContext() self.render_context = RenderContext()
super(Context, self).__init__(dict_) super(Context, self).__init__(dict_)
def __copy__(self):
duplicate = super(Context, self).__copy__()
duplicate.render_context = copy(self.render_context)
return duplicate
def _new(self):
return self.__class__(autoescape=self.autoescape,
current_app=self.current_app,
use_l10n=self.use_l10n)
def update(self, other_dict): def update(self, other_dict):
"Pushes other_dict to the stack of dictionaries in the Context" "Pushes other_dict to the stack of dictionaries in the Context"
if not hasattr(other_dict, '__getitem__'): if not hasattr(other_dict, '__getitem__'):
@ -148,3 +168,8 @@ class RequestContext(Context):
processors = tuple(processors) processors = tuple(processors)
for processor in get_standard_processors() + processors: for processor in get_standard_processors() + processors:
self.update(processor(request)) self.update(processor(request))
def _new(self):
return self.__class__(request=HttpRequest(),
current_app=self.current_app,
use_l10n=self.use_l10n)

View File

@ -5,6 +5,7 @@ import os
import re import re
import mimetypes import mimetypes
import warnings import warnings
from copy import copy
try: try:
from cStringIO import StringIO from cStringIO import StringIO
except ImportError: except ImportError:
@ -91,9 +92,12 @@ class ClientHandler(BaseHandler):
def store_rendered_templates(store, signal, sender, template, context, **kwargs): def store_rendered_templates(store, signal, sender, template, context, **kwargs):
""" """
Stores templates and contexts that are rendered. Stores templates and contexts that are rendered.
The context is copied so that it is an accurate representation at the time
of rendering.
""" """
store.setdefault('templates', []).append(template) store.setdefault('templates', []).append(template)
store.setdefault('context', ContextList()).append(context) store.setdefault('context', ContextList()).append(copy(context))
def encode_multipart(boundary, data): def encode_multipart(boundary, data):
""" """