Mercurial > piecrust2
diff piecrust/rendering.py @ 911:f2b75e4be981
internal: Use pickle for caching things on disk.
This is just easier and lets us use proper classes instead of converting
to/from dictionaries.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Sun, 23 Jul 2017 18:03:21 -0700 |
parents | cc2647360036 |
children | 1bb704434ee2 |
line wrap: on
line diff
--- a/piecrust/rendering.py Sun Jul 23 18:01:58 2017 -0700 +++ b/piecrust/rendering.py Sun Jul 23 18:03:21 2017 -0700 @@ -4,7 +4,6 @@ import logging from piecrust.data.builder import ( DataBuildingContext, build_page_data, add_layout_data) -from piecrust.fastpickle import _pickle_object, _unpickle_object from piecrust.templating.base import TemplateNotFoundError, TemplatingError from piecrust.sources.base import AbortedSourceUseError @@ -202,24 +201,20 @@ null_names = ['', 'none', 'nil'] if layout_name not in null_names: with stats.timerScope("BuildRenderData"): - add_layout_data(page_data, render_result['segments']) + add_layout_data(page_data, render_result.segments) with stats.timerScope("PageRenderLayout"): layout_result = _do_render_layout( layout_name, page, page_data) else: - layout_result = { - 'content': render_result['segments']['content'], - 'pass_info': None} + layout_result = RenderedLayout( + render_result.segments['content'], None) rp = RenderedPage(page, ctx.sub_num) rp.data = page_data - rp.content = layout_result['content'] - rp.render_info[PASS_FORMATTING] = _unpickle_object( - render_result['pass_info']) - if layout_result['pass_info'] is not None: - rp.render_info[PASS_RENDERING] = _unpickle_object( - layout_result['pass_info']) + rp.content = layout_result.content + rp.render_info[PASS_FORMATTING] = render_result.render_pass_info + rp.render_info[PASS_RENDERING] = layout_result.render_pass_info return rp except AbortedSourceUseError: @@ -277,10 +272,7 @@ ctx.setCurrentPass(PASS_NONE) stack.popCtx() - rs = RenderedSegments( - render_result['segments'], - _unpickle_object(render_result['pass_info'])) - return rs + return render_result def _build_render_data(ctx): @@ -333,9 +325,7 @@ formatted_segments['content.abstract'] = content_abstract pass_info = ctx.render_passes[PASS_FORMATTING] - res = { - 'segments': formatted_segments, - 'pass_info': _pickle_object(pass_info)} + res = RenderedSegments(formatted_segments, pass_info) app.env.stats.stepCounter('PageRenderSegments') @@ -371,7 +361,7 @@ raise Exception(msg) from ex pass_info = cur_ctx.render_passes[PASS_RENDERING] - res = {'content': output, 'pass_info': _pickle_object(pass_info)} + res = RenderedLayout(output, pass_info) app.env.stats.stepCounter('PageRenderLayout') @@ -394,6 +384,12 @@ format_count = 0 format_name = format_name or app.config.get('site/default_format') + + auto_fmts = app.config.get('site/auto_formats') + redirect = auto_fmts.get(format_name) + if redirect is not None: + format_name = redirect + for fmt in app.plugin_loader.getFormatters(): if not fmt.enabled: continue