Mercurial > piecrust2
comparison piecrust/data/paginationdata.py @ 966:cc55740860de
data: Delay loading page configuration and datetimes.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Sat, 07 Oct 2017 12:32:48 -0700 |
parents | b447c24bc8d4 |
children | 45ad976712ec |
comparison
equal
deleted
inserted
replaced
965:cde2362f4aff | 966:cc55740860de |
---|---|
14 | 14 |
15 def _load(self): | 15 def _load(self): |
16 from piecrust.uriutil import split_uri | 16 from piecrust.uriutil import split_uri |
17 | 17 |
18 page = self._page | 18 page = self._page |
19 dt = page.datetime | |
20 set_val = self._setValue | 19 set_val = self._setValue |
21 | 20 |
22 page_url = page.getUri() | 21 page_url = page.getUri() |
23 _, rel_url = split_uri(page.app, page_url) | 22 _, rel_url = split_uri(page.app, page_url) |
24 set_val('url', page_url) | 23 set_val('url', page_url) |
25 set_val('rel_url', rel_url) | 24 set_val('rel_url', rel_url) |
26 set_val('slug', rel_url) # For backwards compatibility | 25 set_val('slug', rel_url) # For backwards compatibility |
27 set_val('route', copy.deepcopy(page.source_metadata['route_params'])) | 26 set_val('route', copy.deepcopy(page.source_metadata['route_params'])) |
28 set_val('timestamp', time.mktime(page.datetime.timetuple())) | |
29 set_val('datetime', { | |
30 'year': dt.year, 'month': dt.month, 'day': dt.day, | |
31 'hour': dt.hour, 'minute': dt.minute, 'second': dt.second}) | |
32 set_val('mtime', page.content_mtime) | |
33 | 27 |
34 self._mapLoader('date', _load_date) | 28 self._mapLoader('date', _load_date) |
29 self._mapLoader('datetime', _load_datetime) | |
30 self._mapLoader('timestamp', _load_timestamp) | |
31 self._mapLoader('mtime', _load_content_mtime) | |
35 self._mapLoader('assets', _load_assets) | 32 self._mapLoader('assets', _load_assets) |
36 | 33 |
37 segment_names = page.config.get('segments') | 34 segment_names = page.config.get('segments') |
38 for name in segment_names: | 35 for name in segment_names: |
36 self._mapLoader('raw_' + name, _load_raw_segment) | |
39 self._mapLoader(name, _load_rendered_segment) | 37 self._mapLoader(name, _load_rendered_segment) |
40 | 38 |
41 | 39 |
42 def _load_assets(data, name): | 40 def _load_assets(data, name): |
43 from piecrust.data.assetor import Assetor | 41 from piecrust.data.assetor import Assetor |
48 page = data._page | 46 page = data._page |
49 date_format = page.app.config.get('site/date_format') | 47 date_format = page.app.config.get('site/date_format') |
50 if date_format: | 48 if date_format: |
51 return page.datetime.strftime(date_format) | 49 return page.datetime.strftime(date_format) |
52 return None | 50 return None |
51 | |
52 | |
53 def _load_datetime(data, name): | |
54 dt = data_page.datetime | |
55 return { | |
56 'year': dt.year, 'month': dt.month, 'day': dt.day, | |
57 'hour': dt.hour, 'minute': dt.minute, 'second': dt.second} | |
58 | |
59 | |
60 def _load_timestamp(data, name): | |
61 page = data._page | |
62 return time.mktime(page.datetime.timetuple()) | |
63 | |
64 | |
65 def _load_content_mtime(data, name): | |
66 return data._page.content_mtime | |
67 | |
68 | |
69 def _load_raw_segment(data, name): | |
70 page = data._page | |
71 return page.getSegment(name[4:]) | |
53 | 72 |
54 | 73 |
55 def _load_rendered_segment(data, name): | 74 def _load_rendered_segment(data, name): |
56 page = data._page | 75 page = data._page |
57 | 76 |