Commit 84060a1f authored by Russell Keith-Magee's avatar Russell Keith-Magee
Browse files

Refs #13573 -- Modified the key technique added in r13295 to be more robust...

Refs #13573 -- Modified the key technique added in r13295 to be more robust against potential key collisions while keeping key names human-readable. Thanks to Alex for being finicky.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@13299 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent 5acd9cd8
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -3,10 +3,11 @@ Wrapper class that takes a list of template loaders as an argument and attempts
to load templates from them in order, caching the result.
"""

from django.core.exceptions import ImproperlyConfigured
from django.template import TemplateDoesNotExist
from django.template.loader import BaseLoader, get_template_from_string, find_template_loader, make_origin
from django.utils.hashcompat import sha_constructor
from django.utils.importlib import import_module
from django.core.exceptions import ImproperlyConfigured

class Loader(BaseLoader):
    is_usable = True
@@ -34,8 +35,10 @@ class Loader(BaseLoader):
        raise TemplateDoesNotExist(name)

    def load_template(self, template_name, template_dirs=None):
        # Use hash(..) to avoid saving potentially large template_dirs values
        key = hash((template_name, template_dirs))
        key = template_name
        if template_dirs:
            # If template directories were specified, use a hash to differentiate
            key = '-'.join([template_name, sha_constructor('|'.join(template_dirs)).hexdigest()])

        if key not in self.template_cache:
            template, origin = self.find_template(template_name, template_dirs)