Mercurial > piecrust2
comparison 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 |
comparison
equal
deleted
inserted
replaced
873:93ea115027fc | 874:f4608e2e80ce |
---|---|
160 super().__init__(page) | 160 super().__init__(page) |
161 self._ctx = ctx | 161 self._ctx = ctx |
162 | 162 |
163 def _load(self): | 163 def _load(self): |
164 page = self._page | 164 page = self._page |
165 set_val = self._setValue | |
166 | |
165 dt = page.datetime | 167 dt = page.datetime |
166 for k, v in page.source_metadata.items(): | 168 for k, v in page.source_metadata.items(): |
167 self._setValue(k, v) | 169 set_val(k, v) |
168 self._setValue('url', self._page.getUri(self._ctx.sub_num)) | 170 set_val('url', page.getUri(self._ctx.sub_num)) |
169 self._setValue('timestamp', time.mktime(dt.timetuple())) | 171 set_val('timestamp', time.mktime(dt.timetuple())) |
170 self._setValue('datetime', { | 172 set_val('datetime', { |
171 'year': dt.year, 'month': dt.month, 'day': dt.day, | 173 'year': dt.year, 'month': dt.month, 'day': dt.day, |
172 'hour': dt.hour, 'minute': dt.minute, 'second': dt.second}) | 174 'hour': dt.hour, 'minute': dt.minute, 'second': dt.second}) |
173 date_format = page.app.config.get('site/date_format') | |
174 if date_format: | |
175 self._setValue('date', page.datetime.strftime(date_format)) | |
176 | 175 |
176 self._mapLoader('date', _load_date) | |
177 | |
178 | |
179 def _load_date(data, name): | |
180 page = data._page | |
181 date_format = page.app.config.get('site/date_format') | |
182 if date_format: | |
183 return page.datetime.strftime(date_format) | |
184 return None |