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
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
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) self.env = Environment(loader=self.loader, undefined=SilentUndefined, trim_blocks=True, extensions=[IncludeText, Markdown, Syntax, Reference, Refer, YamlVar, 'jinja2.ext.do', 'jinja2.ext.loopcontrols', 'jinja2.ext.with_']) self.env.globals['media_url'] = media_url self.env.globals['content_url'] = content_url self.env.globals['engine'] = engine self.env.globals['deps'] = {} self.env.filters['markdown'] = markdown self.env.filters['syntax'] = syntax config = {} if hasattr(site, 'config'): config = site.config self.env.extend(config=config) try: from typogrify.templatetags import jinja2_filters except ImportError: jinja2_filters = False if jinja2_filters: jinja2_filters.register(self.env)
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) 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) 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 config = {} if hasattr(site, 'config'): config = site.config self.env.extend(config=config) try: from typogrify.templatetags import jinja2_filters except ImportError: jinja2_filters = False if jinja2_filters: jinja2_filters.register(self.env)
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) 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) 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 config = {} if hasattr(site, 'config'): config = site.config self.env.extend(config=config) try: from typogrify.templatetags import jinja2_filters except ImportError: jinja2_filters = False if jinja2_filters: jinja2_filters.register(self.env)
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) 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) 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 config = {} if hasattr(site, "config"): config = site.config self.env.extend(config=config) try: from typogrify.templatetags import jinja2_filters except ImportError: jinja2_filters = False if jinja2_filters: jinja2_filters.register(self.env)
""" Some of these are lifted from Mozilla's Funfactory. """ import jingo import jinja2 from django.conf import settings from django.core.urlresolvers import reverse from django.template import defaultfilters from django.utils import html, encoding, formats, timesince from typogrify.templatetags import jinja2_filters jinja2_filters.register(jingo.env) jingo.register.filter(html.linebreaks) jingo.register.filter(timesince.timesince) jingo.register.filter(timesince.timeuntil) jingo.register.filter(defaultfilters.timesince) jingo.register.filter(defaultfilters.truncatewords) @jingo.register.filter def iriencode(value): return encoding.force_unicode(encoding.iri_to_uri(value)) @jingo.register.filter def date(value, arg=None): """Formats a date according to the given format.""" if not value: