Mercurial > piecrust2
diff piecrust/routing.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 | dc0988d937b3 |
children | cff70eeb1cc1 |
line wrap: on
line diff
--- a/piecrust/routing.py Sat Jun 27 00:03:56 2015 -0700 +++ b/piecrust/routing.py Sat Jun 27 08:27:35 2015 -0700 @@ -15,6 +15,18 @@ ugly_url_cleaner = re.compile(r'\.html$') +def create_route_metadata(page): + route_metadata = copy.deepcopy(page.source_metadata) + route_metadata.update(page.getRouteMetadata()) + + # TODO: fix this hard-coded shit + for key in ['year', 'month', 'day']: + if key in route_metadata and isinstance(route_metadata[key], str): + route_metadata[key] = int(route_metadata[key]) + + return route_metadata + + class IRouteMetadataProvider(object): def getRouteMetadata(self): raise NotImplementedError() @@ -122,16 +134,7 @@ return route_metadata - def getUri(self, route_metadata, *, sub_num=1, provider=None): - route_metadata = copy.deepcopy(route_metadata) - if provider: - route_metadata.update(provider.getRouteMetadata()) - - #TODO: fix this hard-coded shit - for key in ['year', 'month', 'day']: - if key in route_metadata and isinstance(route_metadata[key], str): - route_metadata[key] = int(route_metadata[key]) - + def getUri(self, route_metadata, *, sub_num=1): uri = self.uri_format % route_metadata suffix = None if sub_num > 1: