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