Mercurial > piecrust2
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) |