Mercurial > piecrust2
comparison piecrust/data/builder.py @ 329:422052d2e978
internal: Try handling URLs in a consistent way.
* Now URLs passed to, and returned from, routes will always be absolute URLs,
i.e. URLs including the site root.
* Validate the site root at config loading time to make sure it starts and ends
with a slash.
* Get rid of unused stuff.
* Add tests.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Tue, 31 Mar 2015 23:03:28 -0700 |
parents | 412537e91e45 |
children | 498a917cd2d4 |
comparison
equal
deleted
inserted
replaced
328:2a5996e0d3ec | 329:422052d2e978 |
---|---|
5 from piecrust.configuration import merge_dicts | 5 from piecrust.configuration import merge_dicts |
6 from piecrust.data.assetor import Assetor | 6 from piecrust.data.assetor import Assetor |
7 from piecrust.data.debug import build_debug_info | 7 from piecrust.data.debug import build_debug_info |
8 from piecrust.data.linker import PageLinkerData | 8 from piecrust.data.linker import PageLinkerData |
9 from piecrust.data.paginator import Paginator | 9 from piecrust.data.paginator import Paginator |
10 from piecrust.uriutil import get_slug, split_sub_uri | 10 from piecrust.uriutil import split_uri, split_sub_uri |
11 | 11 |
12 | 12 |
13 logger = logging.getLogger(__name__) | 13 logger = logging.getLogger(__name__) |
14 | 14 |
15 | 15 |
20 self.page_num = page_num | 20 self.page_num = page_num |
21 self.pagination_source = None | 21 self.pagination_source = None |
22 self.pagination_filter = None | 22 self.pagination_filter = None |
23 | 23 |
24 @property | 24 @property |
25 def slug(self): | 25 def app(self): |
26 return get_slug(self.page.app, self.uri) | 26 return self.page.app |
27 | 27 |
28 | 28 |
29 def build_page_data(ctx): | 29 def build_page_data(ctx): |
30 page = ctx.page | 30 page = ctx.page |
31 app = page.app | 31 app = page.app |
32 first_uri, _ = split_sub_uri(app, ctx.uri) | 32 first_uri, _ = split_sub_uri(app, ctx.uri) |
33 _, slug = split_uri(app, ctx.uri) | |
33 | 34 |
34 pc_data = PieCrustData() | 35 pc_data = PieCrustData() |
35 pgn_source = ctx.pagination_source or get_default_pagination_source(page) | 36 pgn_source = ctx.pagination_source or get_default_pagination_source(page) |
36 paginator = Paginator(page, pgn_source, first_uri, ctx.page_num, | 37 paginator = Paginator(page, pgn_source, first_uri, ctx.page_num, |
37 ctx.pagination_filter) | 38 ctx.pagination_filter) |
44 'pagination': paginator, | 45 'pagination': paginator, |
45 'family': linker | 46 'family': linker |
46 } | 47 } |
47 page_data = data['page'] | 48 page_data = data['page'] |
48 page_data['url'] = ctx.uri | 49 page_data['url'] = ctx.uri |
49 page_data['slug'] = ctx.slug | 50 page_data['slug'] = slug |
50 page_data['timestamp'] = time.mktime(page.datetime.timetuple()) | 51 page_data['timestamp'] = time.mktime(page.datetime.timetuple()) |
51 date_format = app.config.get('site/date_format') | 52 date_format = app.config.get('site/date_format') |
52 if date_format: | 53 if date_format: |
53 page_data['date'] = page.datetime.strftime(date_format) | 54 page_data['date'] = page.datetime.strftime(date_format) |
54 | 55 |