# HG changeset patch # User Ludovic Chabant # Date 1507404768 25200 # Node ID cc55740860def585b79880ca4fe49a9662d8428b # Parent cde2362f4affa5877d46159d22049c21bc07d5c2 data: Delay loading page configuration and datetimes. diff -r cde2362f4aff -r cc55740860de piecrust/data/paginationdata.py --- a/piecrust/data/paginationdata.py Sat Oct 07 12:32:25 2017 -0700 +++ b/piecrust/data/paginationdata.py Sat Oct 07 12:32:48 2017 -0700 @@ -16,7 +16,6 @@ from piecrust.uriutil import split_uri page = self._page - dt = page.datetime set_val = self._setValue page_url = page.getUri() @@ -25,17 +24,16 @@ set_val('rel_url', rel_url) set_val('slug', rel_url) # For backwards compatibility set_val('route', copy.deepcopy(page.source_metadata['route_params'])) - set_val('timestamp', time.mktime(page.datetime.timetuple())) - set_val('datetime', { - 'year': dt.year, 'month': dt.month, 'day': dt.day, - 'hour': dt.hour, 'minute': dt.minute, 'second': dt.second}) - set_val('mtime', page.content_mtime) self._mapLoader('date', _load_date) + self._mapLoader('datetime', _load_datetime) + self._mapLoader('timestamp', _load_timestamp) + self._mapLoader('mtime', _load_content_mtime) self._mapLoader('assets', _load_assets) segment_names = page.config.get('segments') for name in segment_names: + self._mapLoader('raw_' + name, _load_raw_segment) self._mapLoader(name, _load_rendered_segment) @@ -52,6 +50,27 @@ return None +def _load_datetime(data, name): + dt = data_page.datetime + return { + 'year': dt.year, 'month': dt.month, 'day': dt.day, + 'hour': dt.hour, 'minute': dt.minute, 'second': dt.second} + + +def _load_timestamp(data, name): + page = data._page + return time.mktime(page.datetime.timetuple()) + + +def _load_content_mtime(data, name): + return data._page.content_mtime + + +def _load_raw_segment(data, name): + page = data._page + return page.getSegment(name[4:]) + + def _load_rendered_segment(data, name): page = data._page