Exemplo n.º 1
0
def setup_test_template_loader(templates_dict, use_cached_loader=False):
    """
    Changes Django to only find templates from within a dictionary (where each
    key is the template name and each value is the corresponding template
    content to return).

    Use meth:`restore_template_loaders` to restore the original loaders.
    """
    if hasattr(loader, RESTORE_LOADERS_ATTR):
        raise Exception("loader.%s already exists" % RESTORE_LOADERS_ATTR)

    def test_template_loader(template_name, template_dirs=None):
        "A custom template loader that loads templates from a dictionary."
        try:
            return (templates_dict[template_name], "test:%s" % template_name)
        except KeyError:
            raise TemplateDoesNotExist(template_name)

    if use_cached_loader:
        template_loader = cached.Loader(('test_template_loader',))
        template_loader._cached_loaders = (test_template_loader,)
    else:
        template_loader = test_template_loader

    setattr(loader, RESTORE_LOADERS_ATTR, loader.template_source_loaders)
    loader.template_source_loaders = (template_loader,)
    return template_loader
Exemplo n.º 2
0
 def _get_loader(cls, templates_dict, use_cached_loader=False):
     if use_cached_loader:
         loader = cached.Loader(('TestTemplateLoader',))
         loader._cached_loaders = TestTemplateLoader(templates_dict)
     return TestTemplateLoader(templates_dict)
Exemplo n.º 3
0
 def setUp(self):
     self.loader = cached.Loader(Engine.get_default(), [
         'django.template.loaders.filesystem.Loader',
     ])