Exemplo n.º 1
0
Arquivo: mu.py Projeto: dreucifer/mupy
 def __init__(self):
     from typogrify.templatetags import jinja_filters
     self.filename = None
     self.fulltext = None
     self.context = None
     self.template = DEFAULT_TEMPLATE
     self.tmpl_env = jinja2.Environment(
         loader=jinja2.FileSystemLoader(TEMPLATE_DIR))
     jinja_filters.register(self.tmpl_env)
Exemplo n.º 2
0
    def JINJA_ENV(self):
        from engineer.filters import format_datetime, markdown_filter, localtime, naturaltime, compress
        from engineer.processors import preprocess_less
        from engineer.themes import ThemeManager

        # Configure Jinja2 environment
        logger.debug("Configuring the Jinja environment.")

        # Helper function to look up a URL by name
        def urlname(name, *args):
            url = settings.URLS.get(name, settings.HOME_URL)
            if isfunction(url):
                return url(*args)
            else:
                return url

        env = Environment(
            loader=ChoiceLoader(
                [FileSystemLoader([self.TEMPLATE_DIR]),
                 ThemeManager.current_theme().template_loader,
                 #self.ENGINEER.THEMES_DIR / 'base_templates',
                 FileSystemLoader([self.ENGINEER.TEMPLATE_DIR])]
            ),
            extensions=['jinja2.ext.with_', ],
            #'compressinja.html.HtmlCompressor'],
            bytecode_cache=FileSystemBytecodeCache(directory=self.JINJA_CACHE_DIR),
            trim_blocks=True)

        # Filters
        env.filters['compress'] = compress
        env.filters['date'] = format_datetime
        env.filters['localtime'] = localtime
        env.filters['naturaltime'] = naturaltime
        env.filters['markdown'] = markdown_filter
        env.filters['typogrify_no_widont'] = typogrify_no_widont
        register(env) # register typogrify filters

        # Globals
        env.globals['theme'] = ThemeManager.current_theme()
        env.globals['urlname'] = urlname
        env.globals['preprocess_less'] = preprocess_less
        #        env.globals['url'] = url
        env.globals['STATIC_URL'] = self.STATIC_URL
        env.globals['DEBUG'] = self.DEBUG
        env.globals['settings'] = self
        return env
Exemplo n.º 3
0
def content_filter(node, content):
    """
    This is the actual content filter called by :class:`exhibition.main.Node`
    on appropiate nodes.

    :param node:
        The node being rendered
    :param content:
        The content of the node, stripped of any YAML frontmatter
    """
    env = Environment(
        loader=FileSystemLoader(node.meta["templates"]),
        extensions=[RaiseError, Mark],
        autoescape=True,
    )
    env.filters["markdown"] = markdown
    env.filters["metasort"] = metasort
    env.filters["metaselect"] = metaselect
    env.filters["metareject"] = metareject
    typogrify_filters.register(env)

    parts = []

    if node.meta.get("extends"):
        parts.append(EXTENDS_TEMPLATE_TEMPLATE % node.meta["extends"])

    if node.meta.get("default_block"):
        parts.extend([
            START_BLOCK_TEMPLATE % node.meta["default_block"],
            content,
            END_BLOCK_TEMPLATE,
        ])
    else:
        parts.append(content)

    content = "".join(parts)

    template = env.from_string(content)

    return template.render({
        NODE_TMPL_VAR: node,
        "time_now": datetime.now(timezone.utc),
    })
Exemplo n.º 4
0
    def update_environment(cls, jinja_env):
        super(BundledFilters, cls).update_environment(jinja_env)

        logger = cls.get_logger()
        register(jinja_env)  # register typogrify filters
        logger.debug("Registered typogrify filters.")
Exemplo n.º 5
0
Arquivo: jinja.py Projeto: jperry/hyde
    def configure(self, site, engine=None):
        """
        Uses the site object to initialize the jinja environment.
        """
        self.site = site
        self.engine = engine
        self.preprocessor = (engine.preprocessor
                            if hasattr(engine, 'preprocessor') else None)

        self.loader = HydeLoader(self.sitepath, site, self.preprocessor)

        default_extensions = [
                IncludeText,
                Spaceless,
                Asciidoc,
                Markdown,
                restructuredText,
                Syntax,
                Reference,
                Refer,
                YamlVar,
                'jinja2.ext.do',
                'jinja2.ext.loopcontrols',
                'jinja2.ext.with_'
        ]

        defaults = {
            'line_statement_prefix': '$$$',
            'trim_blocks': True,
        }

        settings = dict()
        settings.update(defaults)
        settings['extensions'] = list()
        settings['extensions'].extend(default_extensions)
        settings['filters'] = {}

        conf = {}

        try:
            conf = attrgetter('config.jinja2')(site).to_dict()
        except AttributeError:
            pass

        settings.update(
            dict([(key, conf[key]) for key in defaults if key in conf]))

        extensions = conf.get('extensions', [])
        if isinstance(extensions, list):
            settings['extensions'].extend(extensions)
        else:
            settings['extensions'].append(extensions)
        
        filters = conf.get('filters', {})
        if isinstance(filters, dict):
            for name, value in filters.items():
                parts = value.split('.')
                module_name = '.'.join(parts[:-1])
                function_name = parts[-1]
                module = __import__(module_name, fromlist=[function_name])
                settings['filters'][name] = getattr(module, function_name)

        self.env = Environment(
                    loader=self.loader,
                    undefined=SilentUndefined,
                    line_statement_prefix=settings['line_statement_prefix'],
                    trim_blocks=True,
                    bytecode_cache=FileSystemBytecodeCache(),
                    extensions=settings['extensions'])
        self.env.globals['media_url'] = media_url
        self.env.globals['content_url'] = content_url
        self.env.globals['full_url'] = full_url
        self.env.globals['engine'] = engine
        self.env.globals['deps'] = {}
        self.env.filters['urlencode'] = urlencode
        self.env.filters['urldecode'] = urldecode
        self.env.filters['asciidoc'] = asciidoc
        self.env.filters['markdown'] = markdown
        self.env.filters['restructuredtext'] = restructuredtext
        self.env.filters['syntax'] = syntax
        self.env.filters['date_format'] = date_format
        self.env.filters['xmldatetime'] = xmldatetime
        self.env.filters['islice'] = islice
        self.env.filters['top'] = top
        self.env.filters.update(settings['filters'])

        config = {}
        if hasattr(site, 'config'):
            config = site.config

        self.env.extend(config=config)

        try:
            from typogrify.templatetags import jinja_filters
        except ImportError:
            jinja_filters = False

        if jinja_filters:
            jinja_filters.register(self.env)
Exemplo n.º 6
0
from seam.core import app
from seam.views import bp
from typogrify.templatetags.jinja_filters import register

app.register_blueprint(bp)
register(app.jinja_env)
Exemplo n.º 7
0
import json

import argparse
from flask import Flask, render_template

from typogrify.templatetags import jinja_filters

import app_config
from render_utils import make_context, urlencode_filter, unescape_filter
import static

app = Flask(__name__)

app.jinja_env.filters['urlencode'] = urlencode_filter
app.jinja_env.filters['unescape'] = unescape_filter
jinja_filters.register(app.jinja_env)

# Example application views
@app.route('/')
def index():
    """
    Example view demonstrating rendering a simple HTML page.
    """
    context = make_context()

    with open('data/featured.json') as f:
        context['featured'] = json.load(f)

    return render_template('index.html', **context)

@app.route('/comments/')
Exemplo n.º 8
0
    def configure(self, site, engine=None):
        """
        Uses the site object to initialize the jinja environment.
        """
        self.site = site
        self.engine = engine
        self.preprocessor = (engine.preprocessor
                             if hasattr(engine, 'preprocessor') else None)

        self.loader = HydeLoader(self.sitepath, site, self.preprocessor)

        default_extensions = [
            IncludeText,
            Spaceless,
            Asciidoc,
            Markdown,
            restructuredText,
            Syntax,
            Reference,
            Refer,
            YamlVar,
            'jinja2.ext.do',
            'jinja2.ext.loopcontrols',
            'jinja2.ext.with_'
        ]

        defaults = {
            'line_statement_prefix': '$$$',
            'trim_blocks': True,
        }

        settings = dict()
        settings.update(defaults)
        settings['extensions'] = list()
        settings['extensions'].extend(default_extensions)
        settings['filters'] = {}
        settings['tests'] = {}

        conf = {}

        try:
            conf = attrgetter('config.jinja2')(site).to_dict()
        except AttributeError:
            pass

        settings.update(
            dict([(key, conf[key]) for key in defaults if key in conf]))

        extensions = conf.get('extensions', [])
        if isinstance(extensions, list):
            settings['extensions'].extend(extensions)
        else:
            settings['extensions'].append(extensions)

        filters = conf.get('filters', {})
        if isinstance(filters, dict):
            for name, value in filters.items():
                parts = value.split('.')
                module_name = '.'.join(parts[:-1])
                function_name = parts[-1]
                module = __import__(module_name, fromlist=[function_name])
                settings['filters'][name] = getattr(module, function_name)

        tests = conf.get('tests', {})
        if isinstance(tests, dict):
            for name, value in tests.items():
                parts = value.split('.')
                module_name = '.'.join(parts[:-1])
                function_name = parts[-1]
                module = __import__(module_name, fromlist=[function_name])
                settings['tests'][name] = getattr(module, function_name)

        self.env = Environment(
            loader=self.loader,
            undefined=SilentUndefined,
            line_statement_prefix=settings['line_statement_prefix'],
            trim_blocks=True,
            bytecode_cache=FileSystemBytecodeCache(),
            extensions=settings['extensions'])
        self.env.globals['media_url'] = media_url
        self.env.globals['content_url'] = content_url
        self.env.globals['full_url'] = full_url
        self.env.globals['engine'] = engine
        self.env.globals['deps'] = {}
        self.env.filters['urlencode'] = urlencode
        self.env.filters['urldecode'] = urldecode
        self.env.filters['asciidoc'] = asciidoc
        self.env.filters['markdown'] = markdown
        self.env.filters['restructuredtext'] = restructuredtext
        self.env.filters['syntax'] = syntax
        self.env.filters['date_format'] = date_format
        self.env.filters['xmldatetime'] = xmldatetime
        self.env.filters['islice'] = islice
        self.env.filters['top'] = top
        self.env.filters.update(settings['filters'])
        self.env.tests.update(settings['tests'])

        config = {}
        if hasattr(site, 'config'):
            config = site.config

        self.env.extend(config=config)

        try:
            from typogrify.templatetags import jinja_filters
        except ImportError:
            jinja_filters = False

        if jinja_filters:
            jinja_filters.register(self.env)
Exemplo n.º 9
0
    def update_environment(cls, jinja_env):
        super(BundledFilters, cls).update_environment(jinja_env)

        logger = cls.get_logger()
        register(jinja_env)  # register typogrify filters
        logger.debug("Registered typogrify filters.")
Exemplo n.º 10
0
import oauth
import static

from collections import defaultdict
from flask import Flask, make_response, render_template
from render_utils import make_context, smarty_filter, urlencode_filter
from typogrify.templatetags import jinja_filters
from urlparse import urlparse, parse_qs
from werkzeug.debug import DebuggedApplication

app = Flask(__name__)
app.debug = app_config.DEBUG

app.add_template_filter(smarty_filter, name='smarty')
app.add_template_filter(urlencode_filter, name='urlencode')
jinja_filters.register(app.jinja_env)


@app.route('/')
@oauth.oauth_required
def index():
    context = make_context()

    speeches = []
    for speech in commencement_data.load():
        speech['share_url'] = 'http://%s/%s/speech/%s/' % (
            app_config.PRODUCTION_S3_BUCKET['bucket_name'],
            app_config.PROJECT_SLUG, speech['slug'])
        speech['money_quote_image'] = '%s/quote-images/%s.png' % (
            app_config.S3_BASE_URL, speech['slug'])
        speech[
Exemplo n.º 11
0
Arquivo: jinja.py Projeto: hyde/hyde
    def configure(self, site, engine=None):
        """
        Uses the site object to initialize the jinja environment.
        """
        self.site = site
        self.engine = engine
        self.preprocessor = engine.preprocessor if hasattr(engine, "preprocessor") else None

        self.loader = HydeLoader(self.sitepath, site, self.preprocessor)

        default_extensions = [
            IncludeText,
            Spaceless,
            Asciidoc,
            Markdown,
            restructuredText,
            Syntax,
            Reference,
            Refer,
            YamlVar,
            "jinja2.ext.do",
            "jinja2.ext.loopcontrols",
            "jinja2.ext.with_",
        ]

        defaults = {"line_statement_prefix": "$$$", "trim_blocks": True}

        settings = dict()
        settings.update(defaults)
        settings["extensions"] = list()
        settings["extensions"].extend(default_extensions)
        settings["filters"] = {}
        settings["tests"] = {}

        conf = {}

        try:
            conf = attrgetter("config.jinja2")(site).to_dict()
        except AttributeError:
            pass

        settings.update(dict([(key, conf[key]) for key in defaults if key in conf]))

        extensions = conf.get("extensions", [])
        if isinstance(extensions, list):
            settings["extensions"].extend(extensions)
        else:
            settings["extensions"].append(extensions)

        filters = conf.get("filters", {})
        if isinstance(filters, dict):
            for name, value in filters.items():
                parts = value.split(".")
                module_name = ".".join(parts[:-1])
                function_name = parts[-1]
                module = __import__(module_name, fromlist=[function_name])
                settings["filters"][name] = getattr(module, function_name)

        tests = conf.get("tests", {})
        if isinstance(tests, dict):
            for name, value in tests.items():
                parts = value.split(".")
                module_name = ".".join(parts[:-1])
                function_name = parts[-1]
                module = __import__(module_name, fromlist=[function_name])
                settings["tests"][name] = getattr(module, function_name)

        self.env = Environment(
            loader=self.loader,
            undefined=SilentUndefined,
            line_statement_prefix=settings["line_statement_prefix"],
            trim_blocks=True,
            bytecode_cache=FileSystemBytecodeCache(),
            extensions=settings["extensions"],
        )
        self.env.globals["media_url"] = media_url
        self.env.globals["content_url"] = content_url
        self.env.globals["full_url"] = full_url
        self.env.globals["engine"] = engine
        self.env.globals["deps"] = {}
        self.env.filters["urlencode"] = urlencode
        self.env.filters["urldecode"] = urldecode
        self.env.filters["asciidoc"] = asciidoc
        self.env.filters["markdown"] = markdown
        self.env.filters["restructuredtext"] = restructuredtext
        self.env.filters["syntax"] = syntax
        self.env.filters["date_format"] = date_format
        self.env.filters["xmldatetime"] = xmldatetime
        self.env.filters["islice"] = islice
        self.env.filters["top"] = top
        self.env.filters.update(settings["filters"])
        self.env.tests.update(settings["tests"])

        config = {}
        if hasattr(site, "config"):
            config = site.config

        self.env.extend(config=config)

        try:
            from typogrify.templatetags import jinja_filters
        except ImportError:
            jinja_filters = False

        if jinja_filters:
            jinja_filters.register(self.env)