comparison piecrust/data/builder.py @ 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 606f6d57b5df
children 7f235e65ef5d
comparison
equal deleted inserted replaced
801:87df68be4cc8 802:0da1207472d3
5 from piecrust.data.linker import PageLinkerData 5 from piecrust.data.linker import PageLinkerData
6 from piecrust.data.pagedata import PageData 6 from piecrust.data.pagedata import PageData
7 from piecrust.data.paginator import Paginator 7 from piecrust.data.paginator import Paginator
8 from piecrust.data.piecrustdata import PieCrustData 8 from piecrust.data.piecrustdata import PieCrustData
9 from piecrust.data.providersdata import DataProvidersData 9 from piecrust.data.providersdata import DataProvidersData
10 from piecrust.routing import CompositeRouteFunction
10 11
11 12
12 logger = logging.getLogger(__name__) 13 logger = logging.getLogger(__name__)
13 14
14 15
47 'assets': assetor, 48 'assets': assetor,
48 'pagination': paginator, 49 'pagination': paginator,
49 'family': linker 50 'family': linker
50 } 51 }
51 52
53 for route in app.routes:
54 name = route.func_name
55 func = data.get(name)
56 if func is None:
57 func = CompositeRouteFunction()
58 func.addFunc(route)
59 data[name] = func
60 elif isinstance(func, CompositeRouteFunction):
61 func.addFunc(route)
62 else:
63 raise Exception("Route function '%s' collides with an "
64 "existing function or template data." %
65 name)
66
52 #TODO: handle slugified taxonomy terms. 67 #TODO: handle slugified taxonomy terms.
53 68
54 site_data = app.config.getAll() 69 site_data = app.config.getAll()
55 providers_data = DataProvidersData(page) 70 providers_data = DataProvidersData(page)
56 data = MergedMapping([data, providers_data, site_data]) 71 data = MergedMapping([data, providers_data, site_data])