Skip to content

Instantly share code, notes, and snippets.

@jvanasco
Last active December 15, 2015 11:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jvanasco/5257232 to your computer and use it in GitHub Desktop.
Save jvanasco/5257232 to your computer and use it in GitHub Desktop.
Idea for passing in arguments to mako templating
class SettingsSection(Settings):
def __init__(self, settings=None, section_prefix=None, **kw):
if settings is None:
settings = {}
section_prefix_len = len(section_prefix)
section = dict([ (k[section_prefix_len:],v) for k,v in settings.items() if k[:section_prefix_len] == section_prefix ])
for (k,v) in kw.items():
if k not in section:
section[k] = v
dict.__init__(self, **section)
if lookup is None:
reload_templates = settings.get('pyramid.reload_templates', None)
if reload_templates is None:
reload_templates = settings.get('reload_templates', False)
reload_templates = asbool(reload_templates)
mako_defaults = {\
'directories' : [],
'module_directory' : None,
'input_encoding':'utf-8' ,
'error_handler':None,
'default_filters':'h',
'imports':None,
'strict_undefined':False,
'preprocessor':None,
'filesystem_checks':reload_templates,
}
mako_settings = SettingsSection( settings , 'mako.' , **mako_defaults )
mako_settings['strict_undefined'] = asbool( mako_settings['strict_undefined'] )
if not is_nonstr_iter(mako_settings['directories']):
mako_settings['directories'] = list(filter(None, mako_settings['directories'].splitlines()))
mako_settings['directories'] = [ abspath_from_asset_spec(d) for d in mako_settings['directories'] ]
if mako_settings['module_directory'] is not None:
mako_settings['module_directory'] = abspath_from_asset_spec(mako_settings['module_directory'])
if mako_settings['error_handler'] is not None:
dotted = DottedNameResolver(info.package)
mako_settings['error_handler'] = dotted.maybe_resolve(mako_settings['error_handler'])
if mako_settings['default_filters'] is not None:
if not is_nonstr_iter(mako_settings['default_filters']):
mako_settings['default_filters'] = list(filter(
None, mako_settings['default_filters'].splitlines()))
if mako_settings['imports'] is not None:
if not is_nonstr_iter(mako_settings['imports']):
mako_settings['imports'] = list(filter(None, mako_settings['imports'].splitlines()))
if mako_settings['preprocessor'] is not None:
dotted = DottedNameResolver(info.package)
mako_settings['preprocessor'] = dotted.maybe_resolve(mako_settings['preprocessor'])
lookup = PkgResourceTemplateLookup(**mako_settings)
with registry_lock:
registry.registerUtility(lookup, IMakoLookup,
name=settings_prefix)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment