Mercurial > piecrust2
changeset 802:0da1207472d3
templating: Put the routing functions in the data, not the template engine.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Thu, 29 Sep 2016 21:52:18 -0700 |
parents | 87df68be4cc8 |
children | bf9f4e55f751 |
files | piecrust/data/builder.py piecrust/templating/jinjaengine.py |
diffstat | 2 files changed, 15 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/piecrust/data/builder.py Thu Sep 29 21:28:20 2016 -0700 +++ b/piecrust/data/builder.py Thu Sep 29 21:52:18 2016 -0700 @@ -7,6 +7,7 @@ from piecrust.data.paginator import Paginator from piecrust.data.piecrustdata import PieCrustData from piecrust.data.providersdata import DataProvidersData +from piecrust.routing import CompositeRouteFunction logger = logging.getLogger(__name__) @@ -49,6 +50,20 @@ 'family': linker } + for route in app.routes: + name = route.func_name + func = data.get(name) + if func is None: + func = CompositeRouteFunction() + func.addFunc(route) + data[name] = func + elif isinstance(func, CompositeRouteFunction): + func.addFunc(route) + else: + raise Exception("Route function '%s' collides with an " + "existing function or template data." % + name) + #TODO: handle slugified taxonomy terms. site_data = app.config.getAll()
--- a/piecrust/templating/jinjaengine.py Thu Sep 29 21:28:20 2016 -0700 +++ b/piecrust/templating/jinjaengine.py Thu Sep 29 21:52:18 2016 -0700 @@ -17,7 +17,6 @@ from piecrust.data.paginator import Paginator from piecrust.environment import AbortedSourceUseError from piecrust.rendering import format_text -from piecrust.routing import CompositeRouteFunction from piecrust.templating.base import (TemplateEngine, TemplateNotFoundError, TemplatingError) from piecrust.uriutil import multi_replace @@ -234,21 +233,6 @@ self.filters['raw'] = self.filters['safe'] self.globals['pcfail'] = raise_exception - # Add route functions. - for route in app.routes: - name = route.func_name - func = self.globals.get(name) - if func is None: - func = CompositeRouteFunction() - func.addFunc(route) - self.globals[name] = func - elif isinstance(func, CompositeRouteFunction): - self.globals[name].addFunc(route) - else: - raise Exception("Route function '%s' collides with an " - "existing function or template data." % - name) - def _paginate(self, value, items_per_page=5): cpi = self.app.env.exec_info_stack.current_page_info if cpi is None or cpi.page is None or cpi.render_ctx is None: