diff --git a/pyramid_formalchemy/__init__.py b/pyramid_formalchemy/__init__.py index 6e5a758..68695fd 100644 --- a/pyramid_formalchemy/__init__.py +++ b/pyramid_formalchemy/__init__.py @@ -35,9 +35,13 @@ def configure(config, models=None, forms=None, session_factory=None, package=Non 'fa.session_factory': session_factory, }) + prefix = prefix.rstrip('/') + if not prefix: + prefix = '/' + if use_jquery: - config.add_route('fa_admin', '/%s/*traverse' % prefix, + config.add_route('fa_admin', '%s/*traverse' % prefix, factory='pyramid_formalchemy.resources.AdminView') else: - config.add_route('fa_admin', '/%s/*traverse' % prefix, + config.add_route('fa_admin', '%s/*traverse' % prefix, factory='pyramid_formalchemy.resources.AdminView') diff --git a/pyramid_formalchemy/utils.py b/pyramid_formalchemy/utils.py new file mode 100644 index 0000000..b1f01c1 --- /dev/null +++ b/pyramid_formalchemy/utils.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +from formalchemy.templates import TemplateEngine as BaseTemplateEngine +from formalchemy import fatypes +from webhelpers.html import literal +from pyramid.renderers import render + +class TemplateEngine(BaseTemplateEngine): + """A template engine aware of pyramid""" + + def __init__(self, *args, **kwargs): + """Do nothing. Almost all the mechanism is deleged to pyramid.renderers""" + + def render(self, name=None, renderer=None, template=None, **kwargs): + renderer = renderer or template + if renderer is None: + name = name.strip('/') + if not name.endswith('.pt'): + name = '%s.pt' % name + renderer = 'fa.jquery:templates/forms/%s' % name + kwargs.update(dict( + fatypes=fatypes, + )) + return literal(render(renderer, kwargs)) + +