def __init__(self):
super(Environment, self).__init__(
loader=jinja2.FileSystemLoader(path.join(path.dirname(__file__), 'ui/templates')),
extensions=[jinja2.ext.with_],
auto_reload=options.debug,
autoescape=True,
trim_blocks=True,
undefined=Undefined)
globals()[self.__class__.__name__] = lambda: self # singleton
self.globals['vj4'] = vj4
self.globals['static_url'] = lambda s: options.cdn_prefix + staticmanifest.get(s)
self.globals['paginate'] = misc.paginate
self.filters['nl2br'] = misc.nl2br
self.filters['markdown'] = misc.markdown
self.filters['json'] = json.encode
self.filters['gravatar_url'] = misc.gravatar_url
self.filters['format_size'] = misc.format_size
self.filters['format_seconds'] = misc.format_seconds
self.filters['base64_encode'] = misc.base64_encode
python类ext()的实例源码
def _get_jinja2_env(self):
import jinja2
import jinja2.ext
from compressor.offline.jinja2 import url_for, SpacelessExtension
from compressor.contrib.jinja2ext import CompressorExtension
# Extensions needed for the test cases only.
extensions = [
CompressorExtension,
SpacelessExtension,
jinja2.ext.with_,
jinja2.ext.do,
]
loader = self._get_jinja2_loader()
env = jinja2.Environment(extensions=extensions, loader=loader)
env.globals['url_for'] = url_for
return env
def __init__(self):
super(Environment, self).__init__(
loader=jinja2.FileSystemLoader(path.join(path.dirname(__file__), 'ui/templates')),
extensions=[jinja2.ext.with_],
auto_reload=options.options.debug,
autoescape=True,
trim_blocks=True,
undefined=Undefined
)
globals()[self.__class__.__name__] = lambda: self
self.globals['anubis'] = anubis
self.globals['static_url'] = lambda s: options.options.cdn_prefix + s
self.globals['paginate'] = paginate
self.filters['markdown'] = markdown
self.filters['json'] = json.encode
self.filters['gravatar_url'] = gravatar_url
self.filters['to_size'] = to_size
def _make_environment(load, additionals, extensions):
extensions.append(ext.with_)
env = jinja2.Environment(
loader=jinja2.FunctionLoader(load),
undefined=jinja2.StrictUndefined,
trim_blocks=True,
lstrip_blocks=True,
extensions=extensions,
)
for name, defs in additionals.items():
getattr(env, name).update(defs)
return env
def cache(self):
if self._cache is None:
podcache = self.pod.podcache
ident = 'ext-google-cloud-images'
self._cache = podcache.get_object_cache(ident, write_to_file=True)
return self._cache
def main(options):
logging.basicConfig(format='%(levelname)s:%(message)s', level=logging.DEBUG)
global arguments
arguments = ""
if (options.arg):
exec("%s = %s" % ("tmp", options.arg))
arguments = tmp
logging.info("Load Environment")
env = Environment(loader=FileSystemLoader(".", encoding='utf-8'), extensions=["jinja2.ext.do",])
env.globals.update(load_csv = load_csv)
env.globals.update(load_xml = load_xml)
env.globals.update(load_sqlite = load_sqlite)
env.globals.update(load_text = load_text)
env.globals.update(le = le)
env.globals.update(log = log)
env.globals.update(file_md5 = file_md5)
env.globals.update(file_stat = file_stat)
env.globals.update(getarg = getarg)
if (options.format == "odt"):
logging.info("Read ODT template")
engine = secretary.Renderer(environment=env)
template = open(options.template, 'rb')
logging.info("Template rendering...")
output_data = engine.render(template)
logging.info("Template rendering done")
output_file = open(options.output, 'wb')
output_file.write(output_data)
output_file.close()
logging.info("Done")
elif (options.format == "text"):
logging.info("Read TEXT template")
template = env.get_template(options.template)
logging.info("Template rendering...")
output_data = template.render( )
logging.info("Template rendering done")
output_file = open(options.output, 'wb')
output_file.write(output_data.encode('utf8'))
output_file.close()
logging.info("Done")
else:
logging.info("Error format")