Mercurial > piecrust2
diff piecrust/data/pagedata.py @ 874:f4608e2e80ce
data: Optimize page data creation.
`datetime.strftime` was pretty costly so it's no lazily-computed in some
places, and replaced with some better alternative elsewhere.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Thu, 15 Jun 2017 07:31:50 -0700 |
parents | 08e02c2a2a1a |
children | d6d35b2efd04 |
line wrap: on
line diff
--- a/piecrust/data/pagedata.py Thu Jun 15 07:30:44 2017 -0700 +++ b/piecrust/data/pagedata.py Thu Jun 15 07:31:50 2017 -0700 @@ -162,15 +162,23 @@ def _load(self): page = self._page + set_val = self._setValue + dt = page.datetime for k, v in page.source_metadata.items(): - self._setValue(k, v) - self._setValue('url', self._page.getUri(self._ctx.sub_num)) - self._setValue('timestamp', time.mktime(dt.timetuple())) - self._setValue('datetime', { + set_val(k, v) + set_val('url', page.getUri(self._ctx.sub_num)) + set_val('timestamp', time.mktime(dt.timetuple())) + set_val('datetime', { 'year': dt.year, 'month': dt.month, 'day': dt.day, 'hour': dt.hour, 'minute': dt.minute, 'second': dt.second}) - date_format = page.app.config.get('site/date_format') - if date_format: - self._setValue('date', page.datetime.strftime(date_format)) + + self._mapLoader('date', _load_date) + +def _load_date(data, name): + page = data._page + date_format = page.app.config.get('site/date_format') + if date_format: + return page.datetime.strftime(date_format) + return None