Ejemplo n.º 1
0
def environment(**options):
    env = Environment(**options)
    env.globals.update({
        'static': staticfiles_storage.url,
        'url': url,
        'assets': assets,
        # 'gravatar_url': get_avatar_url,
        'get_current_language': get_language,
        'get_available_languages': get_available_languages,
        'get_language_info_list': get_language_info_list,
        # 'switch': gargoyle.is_active,
        # 'avatar_url': avatar_url
    })

    env.filters.update(
        datetimeformat=babel.datetimefmt,
        dateformat=babel.datefmt,
        timeformat=babel.timefmt,
        natural_period=natural_period,
        # timedeltaformat=format_timedelta,
        numberformat=babel.numberfmt,
        decimalformat=babel.decimalfmt,
        currencyformat=babel.currencyfmt,
        percentformat=babel.percentfmt,
        scientificformat=babel.scientificfmt,
        append_get=do_append_get,
        class_name=do_class_name,
    )

    env.add_extension('jinja2.ext.loopcontrols')
    env.add_extension('jinja2.ext.with_')
    env.add_extension('dinja2.ext.active')
    # from ext.relative_templates import RelativeInclude
    # env.add_extension(RelativeInclude)

    # env.add_extension('jinja2_highlight.HighlightExtension')
    # env.add_extension('jinja2htmlcompress.HTMLCompress')
    env.add_extension('webassets.ext.jinja2.AssetsExtension')
    env.assets_environment = get_env()

    env.add_extension('jinja2.ext.i18n')

    if settings.USE_I18N:
        from django.utils import translation
        env.install_gettext_translations(translation, newstyle=True)
    else:  # pragma: no cover
        env.install_null_translations(newstyle=True)
    return env
Ejemplo n.º 2
0
def get_jinja_env():
    '''
    Get a preconfigured jinja environment including:

     - WebAssets
     - i18n
     - global functions
     - filters
    '''
    global env

    if not env:
        from biryani1 import strings
        from weckan.urls import sso_url

        # Configure Jinja Environment with webassets
        env = Environment(
            autoescape=True,
            loader=PackageLoader('weckan', 'templates'),
            extensions=(AssetsExtension, 'jinja2.ext.i18n', 'jinja2.ext.autoescape')
        )
        env.assets_environment = get_webassets_env(conf)

        # Custom global functions
        env.globals['url'] = url
        env.globals['sso'] = sso_url
        env.globals['static'] = static
        env.globals['slugify'] = strings.slugify
        env.globals['ifelse'] = lambda condition, first, second: first if condition else second
        env.globals['avatar'] = avatar
        env.globals['reuse_publisher'] = reuse_publisher
        env.globals['publisher_small'] = publisher_small
        env.globals['publisher_avatar'] = publisher_avatar
        env.globals['markdown'] = markdown_filter
        env.globals['markdown_extract'] = markdown_extract_filter
        env.globals['user_by_id'] = user_by_id
        env.globals['form_grid'] = form_grid

        # Custom filters
        env.filters['datetime'] = format_datetime
        env.filters['date'] = format_date
        env.filters['swig'] = swig
        env.filters['https'] = https
        env.filters['tooltip_ellipsis'] = tooltip_ellipsis
        env.filters['percent'] = percent_filter

    return env
Ejemplo n.º 3
0
def render(extensions=[], stylesheets=None, target='development'):
    env = Environment(
        loader=FileSystemLoader('./views'),
        extensions=extensions,
        keep_trailing_newline=True,
    )
    env.assets_environment = assets_env

    javascripts = [os.path.basename(path) for path in assets_env['app'].urls()]

    for t in env.list_templates(filter_func=is_template):
        template = env.get_template(t)
        if template.name == 'index.html':
            filepath = 'index.html'
        else:
            filepath = os.path.join(os.path.splitext(template.name)[0], 'index.html')

        mkdir_p(os.path.join('./dist', os.path.dirname(filepath)))

        template.stream({
            'data': data,
            'stylesheets': stylesheets,
            'javascripts': javascripts
        }).dump(os.path.join('./dist', filepath), "utf-8")
Ejemplo n.º 4
0
#!/bin/env python3
from jinja2 import Template
from jinja2 import Environment, FileSystemLoader
from webassets import Environment as AssetsEnvironment
from webassets.ext.jinja2 import AssetsExtension

assets_env = AssetsEnvironment('./assets', '/assets')

env = Environment(loader=FileSystemLoader('./templates'),extensions=[AssetsExtension])
env.assets_environment = assets_env

import filters
env.filters['markd']=filters.markd

template = env.get_template('resume.html')

##A yaml orderedDict loader
import yaml
from collections import OrderedDict

def ordered_load(stream, Loader=yaml.Loader, object_pairs_hook=OrderedDict):
    class OrderedLoader(Loader):
        pass
    def construct_mapping(loader, node):
        loader.flatten_mapping(node)
        return object_pairs_hook(loader.construct_pairs(node))
    OrderedLoader.add_constructor(
        yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG,
        construct_mapping)
    return yaml.load(stream, OrderedLoader)