コード例 #1
0
def find_template(name, dirs=None, override_level=1):
    # Calculate template_source_loaders the first time the function is executed
    # because putting this logic in the module-level namespace may cause
    # circular import errors. See Django ticket #1292.
    from django.template.loader import template_source_loaders
    origin_override_level = override_level
    if template_source_loaders is None:
        loaders = []
        for loader_name in settings.TEMPLATE_LOADERS:
            loader = find_template_loader(loader_name)
            if loader is not None:
                loaders.append(loader)
        template_source_loaders = tuple(loaders)
    for loader in template_source_loaders:
        try:
            times = 1
            while True:
                source, display_name = loader(name, dirs, override_level=times)
                if override_level == 1:
                    return (source, make_origin(display_name, loader, name, dirs))
                else:
                    override_level -= 1
                    times += 1
        except TemplateDoesNotExist:
            pass
    if origin_override_level > 1:
        raise OverrideError("Cannot find the override template")
    else:
        raise TemplateDoesNotExist(name)
コード例 #2
0
ファイル: cache_filesystem.py プロジェクト: hciplab/project
    def load_template_source(self, template_name, template_dirs=None):
        tried = []
        for filepath in self.get_template_sources(template_name, template_dirs):
            try:
                file = open(filepath)
            except IOError:
                tried.append(filepath)
                continue
            
            st = os.fstat(file.fileno())
            cf = self.cached.get(filepath, [-1,-1, None])
            try:
                if cf[0] != st.st_mtime or cf[1] != st.st_size:
                    fdata = file.read().decode(settings.FILE_CHARSET)
                    origin = make_origin(filepath, self.load_template_source, template_name, template_dirs)
                    t = get_template_from_string(fdata, origin, template_name)
                    cf = [st.st_mtime, st.st_size, t, time.time()]
                    self.cached[filepath] = cf
                    
                    if len(self.cached) > self.max_cache:
                        v = min(self.cached.iteritems(), lambda v: v[1][3])
                        del self.cached[v[0]]
                return (cf[2], filepath)  #template
            finally:
                file.close()

        if tried:
            error_msg = "Tried %s" % tried
        else:
            error_msg = "Your TEMPLATE_DIRS setting is empty. Change it to point to at least one template directory."
        raise TemplateDoesNotExist(error_msg)
コード例 #3
0
ファイル: shortcuts.py プロジェクト: MariusCC/tendenci
def find_default_template(name, dirs=None):
    """
    Exclude the theme.template_loader
    So we can properly get the templates not part of any theme.
    """
    # Calculate template_source_loaders the first time the function is executed
    # because putting this logic in the module-level namespace may cause
    # circular import errors. See Django ticket #1292.

    global non_theme_source_loaders
    if non_theme_source_loaders is None:
        loaders = []
        for loader_name in settings.TEMPLATE_LOADERS:
            if loader_name != 'theme.template_loaders.load_template_source':
                loader = find_template_loader(loader_name)
                if loader is not None:
                    loaders.append(loader)
        non_theme_source_loaders = tuple(loaders)
    for loader in non_theme_source_loaders[-1:]:
        try:
            source, display_name = loader(name, dirs)
            return (source, make_origin(display_name, loader, name, dirs))
        except TemplateDoesNotExist:
            pass
    raise TemplateDoesNotExist(name)
コード例 #4
0
def find_template(name, dirs=None, skip_template=None):
    """
    Returns a tuple with a compiled Template object for the given template name,
    and a origin object. Skipping the current template (skip_template),
    this param contain the absolute path of the template.
    """
    from django.template.loader import template_source_loaders
    setattr(name, 'skip_template', skip_template)
    needs_smart_extends = skip_template.loadname == name
    found_template_loader = False
    for loader in template_source_loaders:
        if needs_smart_extends and not found_template_loader and not isinstance(loader, CachedLoader):
            if hasattr(loader, 'load_template_source'):
                if (hasattr(skip_template.loader, '__self__') and
                   skip_template.loader.__self__.__class__ == loader.__class__):
                    found_template_loader = True
            else:  # old way to do template loaders
                found_template_loader = skip_template.loader == loader
            continue
        try:
            source, display_name = loader(name, dirs)
            return (source, make_origin(display_name, loader, name, dirs))
        except TemplateDoesNotExist:
            pass
    raise TemplateDoesNotExist(name)
コード例 #5
0
ファイル: loader.py プロジェクト: dustinfarris/pyjade
    def load_template(self, template_name, template_dirs=None):
        key = template_name
        if template_dirs:
            # If template directories were specified, use a hash to differentiate
            key = '-'.join([template_name, hashlib.sha1('|'.join(template_dirs)).hexdigest()])

        
        if settings.DEBUG or key not in self.template_cache:

            if os.path.splitext(template_name)[1] in ('.jade',):
                source, display_name = self.load_template_source(template_name, template_dirs)
                source=process(source,filename=template_name,compiler=Compiler)
                origin = make_origin(display_name, self.load_template_source, template_name, template_dirs)
                template = get_template_from_string(source, origin, template_name)
            else:
                template, origin = self.find_template(template_name, template_dirs)
            if not hasattr(template, 'render'):
                try:
                    template = get_template_from_string(process(source,filename=template_name,compiler=Compiler), origin, template_name)
                except TemplateDoesNotExist:
                    # If compiling the template we found raises TemplateDoesNotExist,
                    # back off to returning he source and display name for the template
                    # we were asked to load. This allows for correct identification (later)
                    # of the actual template that does not exist.
                    return template, origin
            self.template_cache[key] = template
        return self.template_cache[key], None
コード例 #6
0
ファイル: makoloader.py プロジェクト: huawenyu/edx-platform
    def load_template(self, template_name, template_dirs=None):
        source, file_path = self.load_template_source(template_name, template_dirs)

        if source.startswith("## mako\n"):
            # This is a mako template
            template = Template(
                filename=file_path,
                module_directory=self.module_directory,
                input_encoding="utf-8",
                output_encoding="utf-8",
                uri=template_name,
            )
            return template, None
        else:
            # This is a regular template
            origin = make_origin(file_path, self.load_template_source, template_name, template_dirs)
            try:
                template = get_template_from_string(source, origin, template_name)
                return template, None
            except TemplateDoesNotExist:
                # If compiling the template we found raises TemplateDoesNotExist, back off to
                # returning the source and display name for the template we were asked to load.
                # This allows for correct identification (later) of the actual template that does
                # not exist.
                return source, file_path
コード例 #7
0
def find_template_and_decorate(name, dirs=None):
    # Calculate template_source_loaders the first time the function is executed
    # because putting this logic in the module-level namespace may cause
    # circular import errors. See Django ticket #1292.

    from django.template.loader import find_template_loader, make_origin
    from django.template import TemplateDoesNotExist
    global template_source_loaders
    if template_source_loaders is None:
        loaders = []
        for loader_name in settings.TEMPLATE_LOADERS:
            loader = find_template_loader(loader_name)
            if loader is not None:
                loaders.append(loader)
        template_source_loaders = tuple(loaders)
    for loader in template_source_loaders:
        try:
            source, display_name = loader(name, dirs)

            # see if this template has a render method, and if so
            # decorate it to emit signals when rendering happens
            if hasattr(source, 'render'):
                if not hasattr(source.render, 'decorated'):

                    # this class has not been decorated yet...
                    source.__class__.render = render_decorator(
                        source.__class__.render)
                
            return (source, make_origin(display_name, loader, name, dirs))
        except TemplateDoesNotExist:
            pass
    raise TemplateDoesNotExist(name)
コード例 #8
0
ファイル: cached.py プロジェクト: JWW81/stochss
 def find_template(self, name, dirs=None):
     for loader in self.loaders:
         try:
             template, display_name = loader(name, dirs)
             return (template, make_origin(display_name, loader, name, dirs))
         except TemplateDoesNotExist:
             pass
     raise TemplateDoesNotExist(name)
コード例 #9
0
ファイル: loaders.py プロジェクト: vojtatranta/Django-react
 def load_template(self, template_name, template_dirs=None):
     source, display_name = self.load_template_source(template_name, template_dirs)
     origin = make_origin(display_name, self.load_template_source, template_name, template_dirs)
     try:
         template = ReactTemplate(display_name, source, origin, template_name)
         return template, None
     except TemplateDoesNotExist:
         return source, display_name
コード例 #10
0
ファイル: loader.py プロジェクト: kod3r/django-templator
 def find_template(self, template_name, template_dirs=None):
     for loader in self.loaders:
         try:
             template, display_name = loader(template_name, template_dirs)
             origin = make_origin(display_name, loader,
                                  template_name, template_dirs)
             return template, origin
         except TemplateDoesNotExist:
             pass
     raise TemplateDoesNotExist(template_name)
コード例 #11
0
 def load_rtl_template(self, template_name, template_dirs=None):
     rtl_template_name = generate_rtl_template_name(template_name)
     for loader in self._loaders:
         try:
             template, display_name = loader(rtl_template_name,
                                             template_dirs)
             return (template, make_origin(display_name, loader,
                                           rtl_template_name,
                                           template_dirs))
         except TemplateDoesNotExist:
             try:
                 template, display_name = loader(template_name,
                                                 template_dirs)
                 return (template, make_origin(display_name, loader,
                                               template_name,
                                               template_dirs))
             except TemplateDoesNotExist:
                 pass
     raise TemplateDoesNotExist(template_name)
コード例 #12
0
def find_template(name, dirs=None, skip_template=None):
    from django.template.loader import find_template_loader
    # Calculate template_source_loaders the first time the function is executed
    # because putting this logic in the module-level namespace may cause
    # circular import errors. See Django ticket #1292.
    global template_source_loaders
    if template_source_loaders is None:
        loaders = []
        template_loaders = settings.TEMPLATE_LOADERS
        if isinstance(template_loaders[0], tuple):
            # django.template.loaders.cached.Loader. See template caching in Django docs
            template_loaders = template_loaders[0][1]
        for loader_name in template_loaders:
            loader = find_template_loader(loader_name)
            if loader is not None:
                loaders.append(loader)
        template_source_loaders = tuple(loaders)
    template_candidate = None
    for loader in template_source_loaders:
        try:
            source, display_name = loader(name, dirs)
            if skip_template:
                extends_tags = source.nodelist[0]
                if get_source(extends_tags.source).name == skip_template.name:
                    #print get_source(extends_tags.source).name
                    #print skip_template.name
                    #print ""
                    template_candidate = None
                    continue
                if not template_candidate:
                    template_candidate = (source,
                                          make_origin(display_name, loader,
                                                      name, dirs))
                    #print template_candidate
                    #print ""
            else:
                return (source, make_origin(display_name, loader, name, dirs))
        except TemplateDoesNotExist:
            pass
    if not template_candidate:
        raise TemplateDoesNotExist(name)
    return template_candidate
コード例 #13
0
ファイル: loader.py プロジェクト: anderser/django-mobile
 def find_template(self, name, dirs=None):
     """
     Find template based on flavour and fall back to
     no flavoured template if not found
     """
     
     flavoured_name = self.prepare_template_name(name)
     
     for loader in self.loaders:
         try:
             template, display_name = loader(flavoured_name, dirs)
             return (template, make_origin(display_name, loader, flavoured_name, dirs))
         except TemplateDoesNotExist:
             #if not flavoured template found, fallback to original/default 
             try:
                 template, display_name = loader(name, dirs)
                 return (template, make_origin(display_name, loader, name, dirs))
             except TemplateDoesNotExist:
                 pass
     raise TemplateDoesNotExist(name)
コード例 #14
0
 def load_template(self, template_name, template_dirs=None):
     source, display_name = self.load_template_source(template_name, template_dirs)
     origin = make_origin(display_name, self.load_template_source, template_name, template_dirs)
     try:
         return OpenOfficeTemplate(source, origin, filepath=display_name), None
     except TemplateDoesNotExist:
         # If compiling the template we found raises TemplateDoesNotExist, back off to
         # returning the source and display name for the template we were asked to load.
         # This allows for correct identification (later) of the actual template that does
         # not exist.
         return source, display_name
コード例 #15
0
 def find_template(self, name, dirs=None):
     for loader in self.loaders:
         try:
             template, display_name = loader.load_template_source(name, dirs)
             return (template, make_origin(display_name, loader.load_template_source, name, dirs))
         except TemplateDoesNotExist:
             pass
         except NotImplementedError, e:
             raise Exception('Template loader %s does not implement load_template_source. Be sure not to nest '
                         'loaders which return only Template objects into the template preprocessor. (We need '
                         'a loader which returns a template string.)' % unicode(loader))
コード例 #16
0
    def find_template(self, name, dirs=None):
        if not name.endswith(".shpaml"):
            raise TemplateDoesNotExist(name)

        for loader in self.loaders:
            try:
                template, display_name = loader(name, dirs)
                return (template, make_origin(display_name, loader, name,
                                              dirs))
            except TemplateDoesNotExist:
                pass
        raise TemplateDoesNotExist(name)
コード例 #17
0
ファイル: loader.py プロジェクト: adieu/django-override
 def load_template(self, template_name, template_dirs=None, override_level=1):
     source, display_name = self.load_template_source(template_name, template_dirs, override_level)
     origin = make_origin(display_name, self.load_template_source, template_name, template_dirs)
     try:
         template = get_template_from_string(source, origin, template_name)
         return template, None
     except TemplateDoesNotExist:
         # If compiling the template we found raises TemplateDoesNotExist, back off to
         # returning the source and display name for the template we were asked to load.
         # This allows for correct identification (later) of the actual template that does
         # not exist.
         return source, display_name
コード例 #18
0
ファイル: template.py プロジェクト: Jille/kninfra
 def find_template(self, name, dirs=None):
     for loader in self.loaders:
         try:
             if hasattr(loader, 'load_template_source'):
                 template, display_name = loader.load_template_source(
                                                 name, dirs)
             else:
                 template, display_name = loader(name, dirs)
             return (template, make_origin(display_name, loader, name, dirs))
         except TemplateDoesNotExist:
             pass
     raise TemplateDoesNotExist(name)
コード例 #19
0
 def load_template(self, template_name, template_dirs=None):
     source, display_name = self.load_template_source(template_name, template_dirs)
     origin = make_origin(display_name, self.load_template_source, template_name, template_dirs)
     try:
         template = Template(source, origin, template_name)
         return template, None
     except TemplateDoesNotExist:
         # If compiling the template we found raises TemplateDoesNotExist, back off to
         # returning the source and display name for the template we were asked to load.
         # This allows for correct identification (later) of the actual template that does
         # not exist.
         return source, display_name
コード例 #20
0
def find_template(name, dirs=None, skip_template=None):
    from django.template.loader import find_template_loader
    # Calculate template_source_loaders the first time the function is executed
    # because putting this logic in the module-level namespace may cause
    # circular import errors. See Django ticket #1292.
    global template_source_loaders
    if template_source_loaders is None:
        loaders = []
        template_loaders = settings.TEMPLATE_LOADERS
        if isinstance(template_loaders[0], tuple):
            # django.template.loaders.cached.Loader. See template caching in Django docs
            template_loaders = template_loaders[0][1]
        for loader_name in template_loaders:
            loader = find_template_loader(loader_name)
            if loader is not None:
                loaders.append(loader)
        template_source_loaders = tuple(loaders)
    template_candidate = None
    for loader in template_source_loaders:
        try:
            source, display_name = loader(name, dirs)
            if skip_template:
                extends_tags = source.nodelist[0]
                if get_source(extends_tags.source).name == skip_template.name:
                    #print get_source(extends_tags.source).name
                    #print skip_template.name
                    #print ""
                    template_candidate = None
                    continue
                if not template_candidate:
                    template_candidate = (source, make_origin(display_name, loader, name, dirs))
                    #print template_candidate
                    #print ""
            else:
                return (source, make_origin(display_name, loader, name, dirs))
        except TemplateDoesNotExist:
            pass
    if not template_candidate:
        raise TemplateDoesNotExist(name)
    return template_candidate
コード例 #21
0
ファイル: views.py プロジェクト: crass/django-debug-toolbar
def template_source(request):
    """
    Return the source of a template, syntax-highlighted by Pygments if
    it's available.
    """
    from django.template import TemplateDoesNotExist
    from django.utils.safestring import mark_safe
    from django.conf import settings

    template_name = request.GET.get('template', None)
    if template_name is None:
        return HttpResponseBadRequest('"template" key is required')

    try:  # Django 1.2 ...
        from django.template.loader import find_template_loader, make_origin
        loaders = []
        for loader_name in settings.TEMPLATE_LOADERS:
            loader = find_template_loader(loader_name)
            if loader is not None:
                loaders.append(loader)
        for loader in loaders:
            try:
                source, display_name = loader.load_template_source(template_name)
                origin = make_origin(display_name, loader, template_name, settings.TEMPLATE_DIRS)
                break
            except TemplateDoesNotExist:
                source = "Template Does Not Exist: %s" % (template_name,)
    except (ImportError, AttributeError):  # Django 1.1 ...
        from django.template.loader import find_template_source
        source, origin = find_template_source(template_name)

    # Allow downloading of template if 'download' GET arg is present.
    if request.GET.get('download', None):
        httpresp = HttpResponse(content=source, content_type="text/plain", )
        httpresp["Content-Disposition"] = 'attachment; filename={}'.format(os.path.split(template_name)[-1])
        return httpresp

    try:
        from pygments import highlight
        from pygments.lexers import HtmlDjangoLexer
        from pygments.formatters import HtmlFormatter

        source = highlight(source, HtmlDjangoLexer(), HtmlFormatter())
        source = mark_safe(source)
        source.pygmentized = True
    except ImportError:
        pass

    return render_to_response('debug_toolbar/panels/template_source.html', {
        'source': source,
        'template_name': template_name
    })
コード例 #22
0
 def find_template(self, name, dirs=None):
     for loader in self.loaders:
         try:
             if hasattr(loader, 'load_template_source'):
                 template, display_name = loader.load_template_source(
                     name, dirs)
             else:
                 template, display_name = loader(name, dirs)
             return (template, make_origin(display_name, loader, name,
                                           dirs))
         except TemplateDoesNotExist:
             pass
     raise TemplateDoesNotExist(name)
コード例 #23
0
    def load_template(self, template_name, template_dirs=None):
        language_info = get_language_info(get_language())
        if language_info['bidi']:
            return self.load_rtl_template(template_name, template_dirs)

        for loader in self._loaders:
            try:
                template, display_name = loader(template_name, template_dirs)
                return (template, make_origin(display_name, loader,
                                              template_name, template_dirs))
            except TemplateDoesNotExist:
                pass
        raise TemplateDoesNotExist(template_name)
コード例 #24
0
 def load_template(self, template_name, template_dirs=None):
     source, display_name = self.load_template_source(template_name, template_dirs)
     origin = make_origin(display_name, self.load_template_source, template_name, template_dirs)
     try:
         template = PystacheTemplate(source, origin, template_name)
         return template, None
     except TemplateDoesNotExist:
         # If compiling the template we found raises TemplateDoesNotExist,
         # back off to returning the source and display name for the
         # template we were asked to load.
         # This allows for correct identification (later) of the actual
         # template that does not exist.
         return source, display_name
コード例 #25
0
    def load_template(self, template_name, template_dirs=None):
        language_info = get_language_info(get_language())
        if language_info['bidi']:
            return self.load_rtl_template(template_name, template_dirs)

        for loader in self._loaders:
            try:
                template, display_name = loader(template_name, template_dirs)
                return (template,
                        make_origin(display_name, loader, template_name,
                                    template_dirs))
            except TemplateDoesNotExist:
                pass
        raise TemplateDoesNotExist(template_name)
コード例 #26
0
def find_template_source(name, dirs=None):
    """Custom version of find_template_source for Django >= 1.3, since
    find_template now always returns a compiled Template instance."""
    loaders = []
    for loader_name in settings.TEMPLATE_LOADERS:
        loader = find_template_loader(loader_name)
        if loader is not None:
            loaders.append(loader)
    for loader in loaders:
        try:
            source, display_name = loader.load_template_source(name, dirs)
            return (source, make_origin(display_name, loader, name, dirs))
        except TemplateDoesNotExist:
            pass
    raise TemplateDoesNotExist(name)
コード例 #27
0
ファイル: loader.py プロジェクト: kod3r/django-templator
 def load_template(self, template_name, template_dirs=None):
     uuid = self.get_template_uuid()
     if uuid:
         # load from db only
         try:
             tpl = TemplateModel.objects.get(group_uuid=uuid, path=template_name)
         except TemplateModel.DoesNotExist:
             raise TemplateDoesNotExist(template_name)
         else:
             origin = make_origin(tpl.path, self, template_name,
                                  template_dirs)
             return tpl.content, origin
     else:
         # use normal loaders
         return self.find_template(template_name, template_dirs)
コード例 #28
0
ファイル: convert.py プロジェクト: Soares/hisp
 def load_template(self, template_name, template_dirs=None):
     if not template_name.endswith('.hisp'):
         raise TemplateDoesNotExist(template_name)
     source, display_name = self.load_template_source(template_name, template_dirs)
     source = hisper().convert(source)
     origin = make_origin(display_name, self.load_template_source, template_name, template_dirs)
     try:
         template = get_template_from_string(source, origin, template_name)
         return template, None
     except TemplateDoesNotExist:
         # If compiling the template we found raises TemplateDoesNotExist, back off to
         # returning the source and display name for the template we were asked to load.
         # This allows for correct identification (later) of the actual template that does
         # not exist.
         return source, display_name
コード例 #29
0
def template_source(request):
    """
    Return the source of a template, syntax-highlighted by Pygments if
    it's available.
    """
    from django.template import TemplateDoesNotExist
    from django.utils.safestring import mark_safe
    from django.conf import settings

    template_name = request.GET.get('template', None)
    if template_name is None:
        return HttpResponseBadRequest('"template" key is required')

    try:  # Django 1.2 ...
        from django.template.loader import find_template_loader, make_origin
        loaders = []
        for loader_name in settings.TEMPLATE_LOADERS:
            loader = find_template_loader(loader_name)
            if loader is not None:
                loaders.append(loader)
        for loader in loaders:
            try:
                source, display_name = loader.load_template_source(
                    template_name)
                origin = make_origin(display_name, loader, template_name,
                                     settings.TEMPLATE_DIRS)
                break
            except TemplateDoesNotExist:
                source = "Template Does Not Exist: %s" % (template_name, )
    except (ImportError, AttributeError):  # Django 1.1 ...
        from django.template.loader import find_template_source
        source, origin = find_template_source(template_name)

    try:
        from pygments import highlight
        from pygments.lexers import HtmlDjangoLexer
        from pygments.formatters import HtmlFormatter

        source = highlight(source, HtmlDjangoLexer(), HtmlFormatter())
        source = mark_safe(source)
        source.pygmentized = True
    except ImportError:
        pass

    return render_to_response('debug_toolbar/panels/template_source.html', {
        'source': source,
        'template_name': template_name
    })
コード例 #30
0
 def find_template(self, name, dirs=None):
     for loader in self.loaders:
         try:
             template, display_name = loader.load_template_source(
                 name, dirs)
             return (template,
                     make_origin(display_name, loader.load_template_source,
                                 name, dirs))
         except TemplateDoesNotExist:
             pass
         except NotImplementedError, e:
             raise Exception(
                 'Template loader %s does not implement load_template_source. Be sure not to nest '
                 'loaders which return only Template objects into the template preprocessor. (We need '
                 'a loader which returns a template string.)' %
                 unicode(loader))
コード例 #31
0
ファイル: views.py プロジェクト: hazeez/django-debug-toolbar
def template_source(request):
    """
    Return the source of a template, syntax-highlighted by Pygments if
    it's available.
    """
    from django.template import TemplateDoesNotExist
    from django.utils.safestring import mark_safe
    from django.conf import settings

    template_name = request.GET.get("template", None)
    if template_name is None:
        return HttpResponseBadRequest('"template" key is required')

    try:  # Django 1.2 ...
        from django.template.loader import find_template_loader, make_origin

        loaders = []
        for loader_name in settings.TEMPLATE_LOADERS:
            loader = find_template_loader(loader_name)
            if loader is not None:
                loaders.append(loader)
        for loader in loaders:
            try:
                source, display_name = loader.load_template_source(template_name)
                origin = make_origin(display_name, loader, template_name, settings.TEMPLATE_DIRS)
                break
            except TemplateDoesNotExist:
                source = "Template Does Not Exist: %s" % (template_name,)
    except (ImportError, AttributeError):  # Django 1.1 ...
        from django.template.loader import find_template_source

        source, origin = find_template_source(template_name)

    try:
        from pygments import highlight
        from pygments.lexers import HtmlDjangoLexer
        from pygments.formatters import HtmlFormatter

        source = highlight(source, HtmlDjangoLexer(), HtmlFormatter())
        source = mark_safe(source)
        source.pygmentized = True
    except ImportError:
        pass

    return render_to_response(
        "debug_toolbar/panels/template_source.html", {"source": source, "template_name": template_name}
    )
コード例 #32
0
ファイル: loaders.py プロジェクト: desres/coffin
def get_django_template(name, dirs=None):
    global django_template_source_loaders
    if django_template_source_loaders is None:
        loaders = []
        for loader_name in settings.JINJA2_TEMPLATE_LOADERS:
            loader = find_template_loader(loader_name)
            if loader is not None:
                loaders.append(loader)
        django_template_source_loaders = tuple(loaders)
    
    for loader in django_template_source_loaders:
        try:
            source, display_name = loader(name, dirs)
            return (source, make_origin(display_name, loader, name, dirs))
        except TemplateDoesNotExist:
            pass
    raise TemplateDoesNotExist(name)
コード例 #33
0
ファイル: base.py プロジェクト: yellowcap/django
    def load_template(self, template_name, template_dirs=None):
        source, display_name = self.load_template_source(
            template_name, template_dirs)
        origin = make_origin(
            display_name, self.load_template_source,
            template_name, template_dirs)

        try:
            template = get_template_from_string(source, origin, template_name)
        except TemplateDoesNotExist:
            # If compiling the template we found raises TemplateDoesNotExist,
            # back off to returning the source and display name for the
            # template we were asked to load. This allows for correct
            # identification of the actual template that does not exist.
            return source, display_name
        else:
            return template, None
コード例 #34
0
ファイル: loaders.py プロジェクト: MyBook/coffin
def get_django_template(name, dirs=None):
    global django_template_source_loaders
    if django_template_source_loaders is None:
        loaders = []
        for loader_name in settings.JINJA2_TEMPLATE_LOADERS:
            loader = find_template_loader(loader_name)
            if loader is not None:
                loaders.append(loader)
        django_template_source_loaders = tuple(loaders)

    for loader in django_template_source_loaders:
        try:
            source, display_name = loader(name, dirs)
            return (source, make_origin(display_name, loader, name, dirs))
        except TemplateDoesNotExist:
            pass
    raise TemplateDoesNotExist(name)
コード例 #35
0
ファイル: cached.py プロジェクト: 77720616/django
 def find_template(self, name, dirs=None):
     key = self.cache_key(name, dirs)
     try:
         result = self.find_template_cache[key]
     except KeyError:
         result = None
         for loader in self.loaders:
             try:
                 template, display_name = loader(name, dirs)
             except TemplateDoesNotExist:
                 pass
             else:
                 result = (template, make_origin(display_name, loader, name, dirs))
     self.find_template_cache[key] = result
     if result:
         return result
     else:
         raise TemplateDoesNotExist(name)
コード例 #36
0
ファイル: jinja2_loader.py プロジェクト: FBK-WED/wed-pipe
    def get_django_template(self, name, dirs=None):
        """ load a template using django instead of jinja2.
        """
        if self._django_template_source_loaders is None:
            loaders = []
            for loader_name in settings.JINJA2_TEMPLATE_LOADERS:
                loader = find_template_loader(loader_name)
                if loader is not None:
                    loaders.append(loader)
            self._django_template_source_loaders = tuple(loaders)

        for loader in self._django_template_source_loaders:
            try:
                source, display_name = loader(name, dirs)
                return source, make_origin(display_name, loader, name, dirs)
            except TemplateDoesNotExist:
                pass
        raise TemplateDoesNotExist(name)
コード例 #37
0
ファイル: cached.py プロジェクト: yunshan/django
 def find_template(self, name, dirs=None):
     key = self.cache_key(name, dirs)
     try:
         result = self.find_template_cache[key]
     except KeyError:
         result = None
         for loader in self.loaders:
             try:
                 template, display_name = loader(name, dirs)
             except TemplateDoesNotExist:
                 pass
             else:
                 result = (template, make_origin(display_name, loader, name, dirs))
     self.find_template_cache[key] = result
     if result:
         return result
     else:
         raise TemplateDoesNotExist(name)
コード例 #38
0
 def find_template(self, name, dirs=None):
     skip_template = getattr(name, 'skip_template', None)
     needs_smart_extends = skip_template and skip_template.loadname == name
     found_template_loader = False
     for loader in self.loaders:
         if needs_smart_extends and not found_template_loader:
             if hasattr(loader, 'load_template_source'):
                 if (hasattr(skip_template.loader, '__self__') and
                    skip_template.loader.__self__.__class__ == loader.__class__):
                     found_template_loader = True
             else:  # old way to do template loaders
                 found_template_loader = skip_template.loader == loader
             continue
         try:
             template, display_name = loader(name, dirs)
             return (template, make_origin(display_name, loader, name, dirs))
         except TemplateDoesNotExist:
             pass
     raise TemplateDoesNotExist(name)
コード例 #39
0
ファイル: loader.py プロジェクト: schuyler1d/djangobars
def find_template(name, dirs=None):
    # Calculate template_source_loaders the first time the function is executed
    # because putting this logic in the module-level namespace may cause
    # circular import errors. See Django ticket #1292.
    global template_source_loaders
    if template_source_loaders is None:
        loaders = []
        for loader_name in settings.HANDLEBARS_LOADERS:
            loader = find_template_loader(loader_name)
            if loader is not None:
                loaders.append(loader)
        template_source_loaders = tuple(loaders)
    for loader in template_source_loaders:
        try:
            source, display_name = loader(name, dirs)
            return (source, make_origin(display_name, loader, name, dirs))
        except TemplateDoesNotExist:
            pass
    raise TemplateDoesNotExist(name)
コード例 #40
0
    def __call__(self, name, dirs=None):
        result = None
        template = None
        display_name = None

        for loader in self.loaders:
            try:
                template, display_name = loader(name, dirs)
            except TemplateDoesNotExist:
                pass
            else:
                result = (template,
                          make_origin(display_name, loader, name, dirs))
                break

        if result is None:
            raise TemplateDoesNotExist(name)

        return compile_template(template), display_name
コード例 #41
0
ファイル: loader.py プロジェクト: xlk521/cloudguantou
    def load_template(self, template_name, template_dirs=None):
        key = template_name
        if template_dirs:
            # If template directories were specified, use a hash to differentiate
            key = '-'.join([
                template_name,
                hashlib.sha1('|'.join(template_dirs)).hexdigest()
            ])

        if settings.DEBUG or key not in self.template_cache:

            if os.path.splitext(template_name)[1] in ('.jade', ):
                try:
                    source, display_name = self.load_template_source(
                        template_name, template_dirs)
                    source = process(source,
                                     filename=template_name,
                                     compiler=Compiler)
                    origin = make_origin(display_name,
                                         self.load_template_source,
                                         template_name, template_dirs)
                    template = get_template_from_string(
                        source, origin, template_name)
                except NotImplementedError:
                    template, origin = self.find_template(
                        template_name, template_dirs)
            else:
                template, origin = self.find_template(template_name,
                                                      template_dirs)
            if not hasattr(template, 'render'):
                try:
                    template = get_template_from_string(
                        process(source,
                                filename=template_name,
                                compiler=Compiler), origin, template_name)
                except TemplateDoesNotExist:
                    # If compiling the template we found raises TemplateDoesNotExist,
                    # back off to returning he source and display name for the template
                    # we were asked to load. This allows for correct identification (later)
                    # of the actual template that does not exist.
                    return template, origin
            self.template_cache[key] = template
        return self.template_cache[key], None
コード例 #42
0
ファイル: loader.py プロジェクト: WasabiMonster/djangobars
def find_template(name, dirs=None):
    # Calculate template_source_loaders the first time the function is executed
    # because putting this logic in the module-level namespace may cause
    # circular import errors. See Django ticket #1292.
    global template_source_loaders
    if template_source_loaders is None:
        loaders = []
        for loader_name in settings.HANDLEBARS_LOADERS:
            loader = find_template_loader(loader_name)
            if loader is not None:
                loaders.append(loader)
        template_source_loaders = tuple(loaders)
    for loader in template_source_loaders:
        try:
            source, display_name = loader(name, dirs)
            return (source, make_origin(display_name, loader, name, dirs))
        except TemplateDoesNotExist:
            pass
    raise TemplateDoesNotExist(name)
コード例 #43
0
def find_template_source(name, dirs=None):
    # Calculate template_source_loaders the first time the function is executed
    # because putting this logic in the module-level namespace may cause
    # circular import errors. See Django ticket #1292.

    if djloader.template_source_loaders is None:
        loaders = []
        for loader_name in settings.TEMPLATE_LOADERS:
            loader = djloader.find_template_loader(loader_name)
            if loader is not None:
                loaders.append(loader)
        djloader.template_source_loaders = tuple(loaders)
    for loader in djloader.template_source_loaders:
        try:
            source, display_name = loader.load_template_source(name, dirs)
            origin = djloader.make_origin(display_name, loader.load_template_source, name, dirs)
            return (source, origin)
        except TemplateDoesNotExist as e:
            pass
    raise TemplateDoesNotExist(name)
コード例 #44
0
 def find_template(self, name, dirs=None):
     skip_template = getattr(name, 'skip_template', None)
     needs_smart_extends = skip_template and skip_template.loadname == name
     found_template_loader = False
     for loader in self.loaders:
         if needs_smart_extends and not found_template_loader:
             if hasattr(loader, 'load_template_source'):
                 if (hasattr(skip_template.loader, '__self__')
                         and skip_template.loader.__self__.__class__
                         == loader.__class__):
                     found_template_loader = True
             else:  # old way to do template loaders
                 found_template_loader = skip_template.loader == loader
             continue
         try:
             template, display_name = loader(name, dirs)
             return (template, make_origin(display_name, loader, name,
                                           dirs))
         except TemplateDoesNotExist:
             pass
     raise TemplateDoesNotExist(name)
コード例 #45
0
 def find_template(self, name, dirs=None):
     """
     Helper method. Lookup the template :param name: in all the configured loaders
     """
     key = self.cache_key(name, dirs)
     try:
         result = self.find_template_cache[key]
     except KeyError:
         result = None
         for loader in self.loaders:
             try:
                 template, display_name = loader(name, dirs)
             except TemplateDoesNotExist:
                 pass
             else:
                 result = (template, make_origin(display_name, loader, name, dirs))
     self.find_template_cache[key] = result
     if result:
         return result
     else:
         self.template_cache[key] = TemplateDoesNotExist
         raise TemplateDoesNotExist(name)
コード例 #46
0
def find_template(name, dirs=None, url=None):
    # url是request.path, 例如/admin/,或者/users/1/之类的字符串
    global template_source_loaders
    tds = settings.TEMPLATE_LOADERS
    if url is not None and settings.IS_DJANGO_TEMPLATE_PATH.search(url):
        tds = [t for t in tds if t.startswith('django.template.loaders.')]
    else:
        tds = [t for t in tds if not t.startswith('django.template.loaders.')]
    if template_source_loaders is None:
        loaders = []
        for loader_name in tds:
            loader = find_template_loader(loader_name)
            if loader is not None:
                loaders.append(loader)
        template_source_loaders = tuple(loaders)
    #print('template_source_loaders',template_source_loaders)
    for loader in template_source_loaders:
        try:
            source, display_name = loader(name, dirs)
            return (source, make_origin(display_name, loader, name, dirs))
        except TemplateDoesNotExist:
            pass
    raise TemplateDoesNotExist(name)
コード例 #47
0
    def load_template(self, template_name, template_dirs=None):
        source, file_path = self.load_template_source(template_name, template_dirs)

        if source.startswith("## mako\n"):
            # This is a mako template
            template = Template(filename=file_path,
                                module_directory=self.module_directory,
                                input_encoding='utf-8',
                                output_encoding='utf-8',
                                uri=template_name)
            return template, None
        else:
            # This is a regular template
            origin = make_origin(file_path, self.load_template_source, template_name, template_dirs)
            try:
                template = get_template_from_string(source, origin, template_name)
                return template, None
            except TemplateDoesNotExist:
                # If compiling the template we found raises TemplateDoesNotExist, back off to
                # returning the source and display name for the template we were asked to load.
                # This allows for correct identification (later) of the actual template that does
                # not exist.
                return source, file_path
コード例 #48
0
def find_default_template(name, dirs=None):
    """
    Exclude the theme.template_loader
    So we can properly get the templates not part of any theme.
    """
    # Calculate template_source_loaders the first time the function is executed
    # because putting this logic in the module-level namespace may cause
    # circular import errors. See Django ticket #1292.
    global non_theme_source_loaders
    if non_theme_source_loaders is None:
        loaders = []
        for loader_name in settings.TEMPLATE_LOADERS:
            if loader_name != 'theme.template_loaders.load_template_source':
                loader = find_template_loader(loader_name)
                if loader is not None:
                    loaders.append(loader)
        non_theme_source_loaders = tuple(loaders)
    for loader in non_theme_source_loaders:
        try:
            source, display_name = loader(name, dirs)
            return (source, make_origin(display_name, loader, name, dirs))
        except TemplateDoesNotExist:
            pass
    raise TemplateDoesNotExist(name)