Beispiel #1
0
 def test_cache_loader_change(self):
     loader1 = loaders.DictLoader({"foo": "one"})
     loader2 = loaders.DictLoader({"foo": "two"})
     env = Environment(loader=loader1, cache_size=2)
     assert env.get_template("foo").render() == "one"
     env.loader = loader2
     assert env.get_template("foo").render() == "two"
Beispiel #2
0
 def test_cache_loader_change(self):
     loader1 = loaders.DictLoader({'foo': 'one'})
     loader2 = loaders.DictLoader({'foo': 'two'})
     env = Environment(loader=loader1, cache_size=2)
     assert env.get_template('foo').render() == 'one'
     env.loader = loader2
     assert env.get_template('foo').render() == 'two'
 def test_choice_loader(self):
     log = self.compile_down(py_compile=True)
     self.mod_env.loader = loaders.ChoiceLoader([self.mod_env.loader, loaders.DictLoader({'DICT_SOURCE': 'DICT_TEMPLATE'})])
     tmpl1 = self.mod_env.get_template('a/test.html')
     self.assert_equal(tmpl1.render(), 'BAR')
     tmpl2 = self.mod_env.get_template('DICT_SOURCE')
     self.assert_equal(tmpl2.render(), 'DICT_TEMPLATE')
 def test_prefix_loader(self):
     log = self.compile_down(py_compile=True)
     self.mod_env.loader = loaders.PrefixLoader({'MOD': self.mod_env.loader,
      'DICT': loaders.DictLoader({'test.html': 'DICT_TEMPLATE'})})
     tmpl1 = self.mod_env.get_template('MOD/a/test.html')
     self.assert_equal(tmpl1.render(), 'BAR')
     tmpl2 = self.mod_env.get_template('DICT/test.html')
     self.assert_equal(tmpl2.render(), 'DICT_TEMPLATE')
Beispiel #5
0
 def test_choice_loader(self, prefix_loader):
     self.compile_down(prefix_loader)
     self.mod_env.loader = loaders.ChoiceLoader(
         [self.mod_env.loader, loaders.DictLoader({"DICT_SOURCE": "DICT_TEMPLATE"})]
     )
     tmpl1 = self.mod_env.get_template("a/test.html")
     assert tmpl1.render() == "BAR"
     tmpl2 = self.mod_env.get_template("DICT_SOURCE")
     assert tmpl2.render() == "DICT_TEMPLATE"
Beispiel #6
0
 def test_prefix_loader(self, prefix_loader):
     self.compile_down(prefix_loader)
     self.mod_env.loader = loaders.PrefixLoader({
         "MOD":
         self.mod_env.loader,
         "DICT":
         loaders.DictLoader({"test.html": "DICT_TEMPLATE"}),
     })
     tmpl1 = self.mod_env.get_template("MOD/a/test.html")
     assert tmpl1.render() == "BAR"
     tmpl2 = self.mod_env.get_template("DICT/test.html")
     assert tmpl2.render() == "DICT_TEMPLATE"
Beispiel #7
0
    def test_choice_loader(self, prefix_loader):
        log = self.compile_down(prefix_loader)

        self.mod_env.loader = loaders.ChoiceLoader([
            self.mod_env.loader,
            loaders.DictLoader({'DICT_SOURCE': 'DICT_TEMPLATE'})
        ])

        tmpl1 = self.mod_env.get_template('a/test.html')
        assert tmpl1.render() == 'BAR'
        tmpl2 = self.mod_env.get_template('DICT_SOURCE')
        assert tmpl2.render() == 'DICT_TEMPLATE'
Beispiel #8
0
 def test_limited_size_cache(self):
     mapping = {'one': 'foo', 'two': 'bar', 'three': 'baz'}
     loader = loaders.DictLoader(mapping)
     env = Environment(loader=loader, cache_size=2)
     t1 = env.get_template('one')
     t2 = env.get_template('two')
     assert t2 is env.get_template('two')
     assert t1 is env.get_template('one')
     t3 = env.get_template('three')
     assert (id(loader), 'one') in env.cache
     assert (id(loader), 'two') not in env.cache
     assert (id(loader), 'three') in env.cache
Beispiel #9
0
    def test_prefix_loader(self, prefix_loader):
        log = self.compile_down(prefix_loader)

        self.mod_env.loader = loaders.PrefixLoader({
            'MOD':      self.mod_env.loader,
            'DICT':     loaders.DictLoader({'test.html': 'DICT_TEMPLATE'})
        })

        tmpl1 = self.mod_env.get_template('MOD/a/test.html')
        assert tmpl1.render() == 'BAR'
        tmpl2 = self.mod_env.get_template('DICT/test.html')
        assert tmpl2.render() == 'DICT_TEMPLATE'
Beispiel #10
0
 def test_limited_size_cache(self):
     mapping = {"one": "foo", "two": "bar", "three": "baz"}
     loader = loaders.DictLoader(mapping)
     env = Environment(loader=loader, cache_size=2)
     t1 = env.get_template("one")
     t2 = env.get_template("two")
     assert t2 is env.get_template("two")
     assert t1 is env.get_template("one")
     env.get_template("three")
     loader_ref = weakref.ref(loader)
     assert (loader_ref, "one") in env.cache
     assert (loader_ref, "two") not in env.cache
     assert (loader_ref, "three") in env.cache
Beispiel #11
0
def render_target(project_loader: loaders.BaseLoader,
                  project_variables: typing.Mapping[str, str],
                  target: TargetConfig):

    variables = dict(project_variables)
    variables.update(target.variables)

    layout = build_layout(target.transaction)
    layout_loader = loaders.DictLoader({"layout": layout})
    target_loader = loaders.ChoiceLoader([project_loader, layout_loader])

    render_text = render_abstract(target.schema_template,
                                  target_loader,
                                  variables)
    return render_text
 def test_dict_loader_cache_invalidates(self):
     mapping = {'foo': "one"}
     env = Environment(loader=loaders.DictLoader(mapping))
     assert env.get_template('foo').render() == "one"
     mapping['foo'] = "two"
     assert env.get_template('foo').render() == "two"
    the same time.

    :copyright: (c) 2010 by the Jinja Team.
    :license: BSD, see LICENSE for more details.
"""
import os
import re
import sys
import unittest
from traceback import format_exception
from jinja2 import loaders
from jinja2._compat import PY2

here = os.path.dirname(os.path.abspath(__file__))

dict_loader = loaders.DictLoader({'justdict.html': 'FOO'})
package_loader = loaders.PackageLoader('jinja2.testsuite.res', 'templates')
filesystem_loader = loaders.FileSystemLoader(here + '/res/templates')
function_loader = loaders.FunctionLoader({'justfunction.html': 'FOO'}.get)
choice_loader = loaders.ChoiceLoader([dict_loader, package_loader])
prefix_loader = loaders.PrefixLoader({
    'a': filesystem_loader,
    'b': dict_loader
})


class JinjaTestCase(unittest.TestCase):

    ### use only these methods for testing.  If you need standard
    ### unittest method, wrap them!
Beispiel #14
0
def dict_loader():
    '''returns DictLoader
    '''
    return loaders.DictLoader({'justdict.html': 'FOO'})
Beispiel #15
0
def dict_loader():
    """returns DictLoader"""
    return loaders.DictLoader({"justdict.html": "FOO"})
Beispiel #16
0
 def test_no_cache(self):
     mapping = {"foo": "one"}
     env = Environment(loader=loaders.DictLoader(mapping), cache_size=0)
     assert env.get_template("foo") is not env.get_template("foo")
Beispiel #17
0
 def test_no_cache(self):
     mapping = {'foo': 'one'}
     env = Environment(loader=loaders.DictLoader(mapping), cache_size=0)
     assert env.get_template('foo') is not env.get_template('foo')
Beispiel #18
0
def test():
    dict_loader = loaders.DictLoader({
        "__init__.py":
        """# -*- coding: utf-8 -*-

from __future__ import print_function
from flask import Blueprint

module = Blueprint("{{ bp_name }}", __name__, template_folder="templates", static_folder="static")

from . import views""",
        "views.py":
        """# -*- coding: utf-8 -*-
'''
For URL Query parameter, use request.args
search = request.args.get("search")
page = request.args.get("page")

For Form input, use request.form
email = request.form.get('email')
password = request.form.get('password')

For data type application/json, use request.data
# data in string format and you have to parse into dictionary
data = request.data
dataDict = json.loads(data)
'''
from __future__ import print_function
from flask import current_app, render_template, abort, request, make_response, flash, redirect, url_for, json
from flask_login import current_user, login_required
from . import module
{%- if messages %} {%- endif %}

@module.route('/hello/')
@module.route('/hello/<name>', methods=['GET', 'POST'])
def hello(name=None):
    current_app.logger.debug('A value for debugging')
    current_app.logger.error('An error occurred')
    resp = make_response(render_template("{{ bp_name }}/hello.html", user=name))
    resp.headers['Content-type'] = 'text/xml; charset=utf-8'
    return resp


@module.route("/page/", defaults={"page": 4, "per_page":1}, methods=["GET", "POST"])
@module.route("/page/<int:page>/<int:per_page>", methods=["GET", "POST"])
def pagination(page, per_page):
    #page = 4
    #per_page = 1
    offset = (page - 1) * per_page
    # 分页方法
    users = User.query.offset(offset).limit(per_page)
    # 等同于下面的 slice 方法
    # users = User.query.slice(3, 4)
    return users


@module.route("{{ uri }}")
def run():
    bad_var = '<script>alert("gotcha");</script>'
    return render_template("{{ bp_name }}/index.html", name="names demo", number=2, script=bad_var)""",
    })
    env = Environment(loader=dict_loader)
    tmpl = env.get_template("__init__.py")
    print(tmpl.render(bp_name="xxx").strip())
    tmpl = env.get_template("views.py")
    print(tmpl.render(bp_name="xxxx", uri="/xxx/xxx/<int:aa>").strip())
    print(index_html)