comparison piecrust/processing/sitemap.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 7081a5f88e10
children 62274d805a6e
comparison
equal deleted inserted replaced
429:ca5a3c970263 430:21e26ed867b6
1 import time 1 import time
2 import logging 2 import logging
3 import yaml 3 import yaml
4 from piecrust.processing.base import SimpleFileProcessor 4 from piecrust.processing.base import SimpleFileProcessor
5 from piecrust.routing import create_route_metadata
5 6
6 7
7 logger = logging.getLogger(__name__) 8 logger = logging.getLogger(__name__)
8 9
9 10
58 if not source_names: 59 if not source_names:
59 return 60 return
60 61
61 for name in source_names: 62 for name in source_names:
62 logger.debug("Generating automatic sitemap entries for '%s'." % 63 logger.debug("Generating automatic sitemap entries for '%s'." %
63 name) 64 name)
64 source = self.app.getSource(name) 65 source = self.app.getSource(name)
65 if source is None: 66 if source is None:
66 raise Exception("No such source: %s" % name) 67 raise Exception("No such source: %s" % name)
67 68
68 for page in source.getPages(): 69 for page in source.getPages():
69 route = self.app.getRoute(source.name, page.source_metadata) 70 route_metadata = create_route_metadata(page)
70 uri = route.getUri(page.source_metadata, provider=page) 71 route = self.app.getRoute(source.name, route_metadata)
72 uri = route.getUri(route_metadata)
71 73
72 t = page.datetime.timestamp() 74 t = page.datetime.timestamp()
73 sm_cfg = page.config.get('sitemap') 75 sm_cfg = page.config.get('sitemap')
74 76
75 args = {'url': uri, 'lastmod': strftime_iso8601(t)} 77 args = {'url': uri, 'lastmod': strftime_iso8601(t)}