Mercurial > piecrust2
changeset 743:7705b3d981ca
templating: Make the 'categories' taxonomy use a 'pccaturl' function again.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Fri, 03 Jun 2016 20:21:58 -0700 |
parents | 9231172e3d81 |
children | d8d2b504306a |
files | piecrust/__init__.py piecrust/appconfig.py piecrust/configuration.py tests/bakes/test_simple_categories.yaml |
diffstat | 4 files changed, 26 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/piecrust/__init__.py Thu Jun 02 20:26:51 2016 -0700 +++ b/piecrust/__init__.py Fri Jun 03 20:21:58 2016 -0700 @@ -18,7 +18,7 @@ PIECRUST_URL = 'https://bolt80.com/piecrust/' -CACHE_VERSION = 26 +CACHE_VERSION = 27 try: from piecrust.__version__ import APP_VERSION
--- a/piecrust/appconfig.py Thu Jun 02 20:26:51 2016 -0700 +++ b/piecrust/appconfig.py Fri Jun 03 20:21:58 2016 -0700 @@ -14,7 +14,8 @@ from piecrust.cache import NullCache from piecrust.configuration import ( Configuration, ConfigurationError, ConfigurationLoader, - try_get_dict_value, set_dict_value, merge_dicts, visit_dict) + try_get_dict_value, try_get_dict_values, + set_dict_value, merge_dicts, visit_dict) from piecrust.sources.base import REALM_USER, REALM_THEME @@ -373,7 +374,8 @@ 'term': 'tag' }), ('categories', { - 'term': 'category' + 'term': 'category', + 'func_name': 'pccaturl' }) ]) }) @@ -502,18 +504,20 @@ # Route. tax_url_cfg_name = '%s_url' % term - tax_url = blog_cfg.get(tax_url_cfg_name, - try_get_dict_value( - user_overrides, - 'site/%s' % tax_url_cfg_name, - values['site'].get( - tax_url_cfg_name, - '%s/%%%s%%' % (term, term)))) + tax_url = try_get_dict_values( + (blog_cfg, tax_url_cfg_name), + (user_overrides, 'site/%s' % tax_url_cfg_name), + (values, 'site/%s' % tax_url_cfg_name), + default=('%s/%%%s%%' % (term, term))) tax_url = '/' + url_prefix + tax_url.lstrip('/') term_arg = term if tax_cfg.get('multiple') is True: term_arg = '+' + term - tax_func = '%s%surl(%s)' % (tpl_func_prefix, term, term_arg) + tax_func_name = try_get_dict_values( + (user_overrides, 'site/taxonomies/%s/func_name' % tax_name), + (values, 'site/taxonomies/%s/func_name' % tax_name), + default=('%s%surl' % (tpl_func_prefix, term))) + tax_func = '%s(%s)' % (tax_func_name, term_arg) tax_route = collections.OrderedDict({ 'url': tax_url, 'generator': tax_gen_name,
--- a/piecrust/configuration.py Thu Jun 02 20:26:51 2016 -0700 +++ b/piecrust/configuration.py Fri Jun 03 20:21:58 2016 -0700 @@ -131,6 +131,15 @@ return default +def try_get_dict_values(*args, default=None): + for d, key in args: + try: + return get_dict_value(d, key) + except KeyError: + continue + return default + + def set_dict_value(d, key, value): bits = key.split('/') bitslen = len(bits)
--- a/tests/bakes/test_simple_categories.yaml Thu Jun 02 20:26:51 2016 -0700 +++ b/tests/bakes/test_simple_categories.yaml Fri Jun 03 20:21:58 2016 -0700 @@ -23,6 +23,7 @@ {% for p in pagination.posts -%} {{p.title}} {% endfor %} + pages/link.md: 'Link: {{pccaturl("bar")}}' pages/_index.md: '' out: index.html: '' @@ -34,6 +35,7 @@ post02.html: '' '03': post03.html: '' + link.html: 'Link: /cat/bar.html' cat: foo.html: | Pages in foo