comparison piecrust/data/base.py @ 430:21e26ed867b6

internal: Create full route metadata in one place. Instead of combining things at different moments to make up route metadata, build it once and for all up-front and use that.
author Ludovic Chabant <ludovic@chabant.com>
date Sat, 27 Jun 2015 08:27:35 -0700
parents f1b759c188b0
children 3aa174a7f3cf
comparison
equal deleted inserted replaced
429:ca5a3c970263 430:21e26ed867b6
1 import copy 1 import copy
2 import time 2 import time
3 import logging 3 import logging
4 from piecrust.data.assetor import Assetor 4 from piecrust.data.assetor import Assetor
5 from piecrust.routing import create_route_metadata
5 from piecrust.uriutil import split_uri 6 from piecrust.uriutil import split_uri
6 7
7 8
8 logger = logging.getLogger(__name__) 9 logger = logging.getLogger(__name__)
9 10
152 def _get_uri(self): 153 def _get_uri(self):
153 page = self._page 154 page = self._page
154 if self._route is None: 155 if self._route is None:
155 # TODO: this is not quite correct, as we're missing parts of the 156 # TODO: this is not quite correct, as we're missing parts of the
156 # route metadata if the current page is a taxonomy page. 157 # route metadata if the current page is a taxonomy page.
157 self._route = page.app.getRoute(page.source.name, 158 route_metadata = create_route_metadata(page)
158 page.source_metadata) 159 self._route = page.app.getRoute(page.source.name, route_metadata)
159 self._route_metadata = copy.deepcopy(page.source_metadata) 160 self._route_metadata = route_metadata
160 if self._route is None: 161 if self._route is None:
161 raise Exception("Can't get route for page: %s" % page.path) 162 raise Exception("Can't get route for page: %s" % page.path)
162 return self._route.getUri(self._route_metadata, provider=page) 163 return self._route.getUri(self._route_metadata)
163 164
164 def _loadCustom(self): 165 def _loadCustom(self):
165 page_url = self._get_uri() 166 page_url = self._get_uri()
166 _, slug = split_uri(self.page.app, page_url) 167 _, slug = split_uri(self.page.app, page_url)
167 self._setValue('url', page_url) 168 self._setValue('url', page_url)