コード例 #1
0
ファイル: loader.py プロジェクト: doconix/django-mako-plus
    def get_template(self, template, def_name=None):
        '''Retrieve a *Django* API template object for the given template name, using the app_path and template_subdir
           settings in this object.  This method still uses the corresponding Mako template and engine, but it
           gives a Django API wrapper around it so you can use it the same as any Django template.

           If def_name is provided, template rendering will be limited to the named def/block (see Mako docs).

           This method corresponds to the Django templating system API.
           A Django exception is raised if the template is not found or cannot compile.
        '''
        try:
            # wrap the mako template in an adapter that gives the Django template API
            return MakoTemplateAdapter(self.get_mako_template(template), def_name)

        except (TopLevelLookupException, TemplateLookupException) as e: # Mako exception raised
            tdne = TemplateDoesNotExist('Template "%s" not found in search path: %s.' % (template, self.template_search_dirs))
            if settings.DEBUG:
                tdne.template_debug = get_template_debug(template, e)
            raise tdne from e

        except (CompileException, SyntaxException) as e: # Mako exception raised
            tse = TemplateSyntaxError('Template "%s" raised an error: %s' % (template, e))
            if settings.DEBUG:
                tse.template_debug = get_template_debug(template, e)
            raise tse from e
コード例 #2
0
 def get_template(template_name, dirs=None):
     if template_name == 'example.html':
         return Template("example: {{ object }}")
     raise TemplateDoesNotExist(template_name)
コード例 #3
0
 def test_check_403(self, mock_loader):
     mock_loader.side_effect = TemplateDoesNotExist("Template not found.")
     self.assertRaises(ImproperlyConfigured, check_template, 'foo.html')
コード例 #4
0
ファイル: overextends_tags.py プロジェクト: wudan1874/mdai
    def find_template(self, name, context, peeking=False):
        """
        Replacement for Django's ``find_template`` that uses the current
        template context to keep track of which template directories it
        has used when finding a template. This allows multiple templates
        with the same relative name/path to be discovered, so that
        circular template inheritance can occur.
        """

        # These imports want settings, which aren't available when this
        # module is imported to ``add_to_builtins``, so do them here.
        from django.conf import settings

        # Find the app_template_dirs (moved in Django 1.8)
        import django.template.loaders.app_directories as app_directories
        try:
            # Django >= 1.8
            get_app_template_dirs = app_directories.get_app_template_dirs
            app_template_dirs = get_app_template_dirs('templates')
        except AttributeError:
            # Django <= 1.7
            app_template_dirs = app_directories.app_template_dirs
        
        # Find the find_template_loader function, and appropriate template
        # settings (changed in Django 1.8)
        try:
            # Django >= 1.8
            find_template_loader = context.template.engine.find_template_loader
            template_dirs = context.template.engine.dirs
            template_loaders = context.template.engine.loaders
        except AttributeError:
            # Django <= 1.7
            from django.template.loader import find_template_loader
            template_dirs = list(settings.TEMPLATE_DIRS)
            template_loaders = settings.TEMPLATE_LOADERS
        
        # Store a dictionary in the template context mapping template
        # names to the lists of template directories available to
        # search for that template. Each time a template is loaded, its
        # origin directory is removed from its directories list.
        context_name = "OVEREXTENDS_DIRS"
        if context_name not in context:
            context[context_name] = {}
        if name not in context[context_name]:
            all_dirs = template_dirs + list(app_template_dirs)
            # os.path.abspath is needed under uWSGI, and also ensures we
            # have consistent path separators across different OSes.
            context[context_name][name] = list(map(os.path.abspath, all_dirs))

        # Build a list of template loaders to use. For loaders that wrap
        # other loaders like the ``cached`` template loader, unwind its
        # internal loaders and add those instead.
        loaders = []
        for loader_name in template_loaders:
            loader = find_template_loader(loader_name)
            loaders.extend(getattr(loader, "loaders", [loader]))

        # Go through the loaders and try to find the template. When
        # found, removed its absolute path from the context dict so
        # that it won't be used again when the same relative name/path
        # is requested.
        for loader in loaders:
            dirs = context[context_name][name]
            if not dirs:
                break
            try:
                source, path = loader.load_template_source(name, dirs)
            except TemplateDoesNotExist:
                pass
            else:
                # Only remove the absolute path for the initial call in
                # get_parent, and not when we're peeking during the
                # second call.
                if not peeking:
                    remove_path = os.path.abspath(path[:-len(name) - 1])
                    context[context_name][name].remove(remove_path)
                return Template(source)
        raise TemplateDoesNotExist(name)
コード例 #5
0
 def load_template_source(self, template_name, *args, **kwargs):
     if not template_name.endswith('.shpaml'):
         raise TemplateDoesNotExist(template_name)
     shpaml_source, template_path = super(Loader, self).load_template_source(template_name, *args, **kwargs)
     html = shpaml.convert_text(shpaml_source)
     return html, template_path
コード例 #6
0
def get_template(template_name, globals=None):
    """Load a template."""
    try:
        return get_env().get_template(template_name, globals=globals)
    except TemplateNotFound, e:
        raise TemplateDoesNotExist(str(e))
コード例 #7
0
 def select_template(template_name_list, dirs=None, using=None):
     if template_name_list == ['test.html']:
         return engines['django'].from_string("<html>test: {{ data }}</html>")
     raise TemplateDoesNotExist(template_name_list[0])
コード例 #8
0
 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)
コード例 #9
0
ファイル: snippet.py プロジェクト: szabo92/gistable
 def load_template(self, template_name, template_dirs=None):
     try:
         template = self.env.get_template(template_name)
         return template, template.filename
     except jinja2.TemplateNotFound:
         raise TemplateDoesNotExist(template_name)
コード例 #10
0
 def get_contents(self, origin):
     try:
         with open(origin.name, encoding=self.engine.file_charset) as fp:
             return fp.read()
     except FileNotFoundError:
         raise TemplateDoesNotExist(origin)
コード例 #11
0
 def load_template_source(self, template_name, dirs):
     global template_coverage_collection, loaded_templates
     if template_coverage_collection == True:
         loaded_templates.add(str(template_name))
     raise TemplateDoesNotExist(template_name)
コード例 #12
0
ファイル: loader.py プロジェクト: fossabot/tumbo-server
        username, project, name = template_name.split(":")
        if name.startswith("static/"):
            name = name.replace("static/", "")

        try:
            file_fact = StaticfileFactory(username, project, name)
            file_obj = file_fact.lookup()
            file = file_obj.content
            return file, template_name
        except NotFound, e:
            raise TemplateDoesNotExist(name)
        except Exception, e:
            raise e

    def load_template_source(self, template_name, template_dirs=None):
        logger.debug("Trying to load template %s" %
                     str(template_name.split(":")))
        if ":" in template_name:
            username, base, short_name = template_name.split(":")
            try:
                base_model = Base.objects.get(name=base)
                f, template_name = self.get_file(template_name, short_name,
                                                 base_model)
                return f, template_name
            except Exception, e:
                logger.info("Could not load template %s (%s)" %
                            (template_name, e.message),
                            exc_info=True)
                raise e
        raise TemplateDoesNotExist("Template '%s' not found" % template_name)
コード例 #13
0
ファイル: base.py プロジェクト: minzaurralde/wirecloud
    def test_workspace_view_handles_missing_templates(self):

        url = reverse('wirecloud.workspace_view', kwargs={'owner': 'user_with_workspaces', 'name': 'ExistingWorkspace'})

        # Authenticate
        self.client.login(username='******', password='******')

        with patch('wirecloud.platform.views.render', return_value=Mock(render=Mock(side_effect=TemplateDoesNotExist('test')))):
            self.assertRaises(TemplateDoesNotExist, self.client.get, url, HTTP_ACCEPT='application/xhtml+xml')
コード例 #14
0
ファイル: test_extends.py プロジェクト: yephper/django
 def load_template_source(self, template_name, template_dirs=None):
     try:
         return self.templates_dict[template_name], template_name
     except KeyError:
         raise TemplateDoesNotExist(template_name)
コード例 #15
0
 def select_template(template_name_list, dirs=None, using=None):
     if template_name_list == ['example.html']:
         return Template("example: {{ object }}")
     raise TemplateDoesNotExist(template_name_list[0])
コード例 #16
0
                    response[part] = _get_node(multi_part,
                                               render_context,
                                               name=part)
                except BlockNotFound, error:
                    errors[part] = error
        else:
            try:
                html_part = get_template('%s.html' % prefixed_template_name)
            except TemplateDoesNotExist:
                html_part = None

            try:
                plain_part = get_template('%s.txt' % prefixed_template_name)
            except TemplateDoesNotExist:
                if not html_part:
                    raise TemplateDoesNotExist(full_template_name)
                else:
                    plain_part = None

            if plain_part:
                response['plain'] = plain_part.render(render_context)

            if html_part:
                response['html'] = html_part.render(render_context)

        if response == {}:
            raise EmailRenderException(
                "Couldn't render email parts. Errors: %s" % errors)

        return response
コード例 #17
0
 def get_template(template_name):
     if template_name == '404.html':
         return Template("404: {{ detail }}")
     if template_name == '403.html':
         return Template("403: {{ detail }}")
     raise TemplateDoesNotExist(template_name)
コード例 #18
0
=======
        super().__init__(engine)
>>>>>>> 37c99181c9a6b95433d60f8c8ef9af5731096435
        self.dirs = dirs

    def get_dirs(self):
        return self.dirs if self.dirs is not None else self.engine.dirs

    def get_contents(self, origin):
        try:
<<<<<<< HEAD
            with io.open(origin.name, encoding=self.engine.file_charset) as fp:
                return fp.read()
        except IOError as e:
            if e.errno == errno.ENOENT:
                raise TemplateDoesNotExist(origin)
            raise

    def get_template_sources(self, template_name, template_dirs=None):
=======
            with open(origin.name, encoding=self.engine.file_charset) as fp:
                return fp.read()
        except FileNotFoundError:
            raise TemplateDoesNotExist(origin)

    def get_template_sources(self, template_name):
>>>>>>> 37c99181c9a6b95433d60f8c8ef9af5731096435
        """
        Return an Origin object pointing to an absolute path in each directory
        in template_dirs. For security reasons, if a path doesn't lie inside
        one of the template_dirs it is excluded from the result set.
コード例 #19
0
ファイル: locmem.py プロジェクト: quanfei/webPractice
 def get_contents(self, origin):
     try:
         return self.templates_dict[origin.name]
     except KeyError:
         raise TemplateDoesNotExist(origin)
コード例 #20
0
 def get_template(template_name, dirs=None):
     if template_name == 'test.html':
         return engines['django'].from_string("<html>test: {{ data }}</html>")
     raise TemplateDoesNotExist(template_name)