From a5772bf3d6e0563b109dc1f2cb19743cf6a19aef Mon Sep 17 00:00:00 2001 From: Bruno Binet Date: Fri, 7 Dec 2012 00:10:30 +0100 Subject: [PATCH 1/3] allow override page url and save_as values directly from the metadata this is similar to the template override implemented in #404 --- pelican/contents.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pelican/contents.py b/pelican/contents.py index d675a2ad..77ee70f8 100644 --- a/pelican/contents.py +++ b/pelican/contents.py @@ -44,6 +44,8 @@ class Page(object): # set metadata as attributes for key, value in local_metadata.items(): + if key in ('save_as', 'url'): + key = 'override_' + key setattr(self, key.lower(), value) # also keep track of the metadata attributes available @@ -128,6 +130,8 @@ class Page(object): return self.settings[fq_key].format(**self.url_format) def get_url_setting(self, key): + if hasattr(self, 'override_' + key): + return getattr(self, 'override_' + key) key = key if self.in_default_lang else 'lang_%s' % key return self._expand_settings(key) From 00c7451200fd75056ebecb7cd681bda08b55d70a Mon Sep 17 00:00:00 2001 From: Bruno Binet Date: Fri, 7 Dec 2012 00:14:00 +0100 Subject: [PATCH 2/3] add functional test for save_as/url override and update functional tests output --- samples/content/pages/override_url_saveas.rst | 9 ++ .../basic/a-markdown-powered-article.html | 3 +- tests/output/basic/archives.html | 3 +- tests/output/basic/article-1.html | 3 +- tests/output/basic/article-2.html | 3 +- tests/output/basic/article-3.html | 3 +- .../output/basic/author/alexis-metaireau.html | 3 +- tests/output/basic/categories.html | 3 +- tests/output/basic/category/bar.html | 3 +- tests/output/basic/category/cat1.html | 3 +- tests/output/basic/category/misc.html | 3 +- tests/output/basic/category/yeah.html | 3 +- .../basic/filename_metadata-example.html | 3 +- tests/output/basic/index.html | 3 +- tests/output/basic/oh-yeah.html | 3 +- tests/output/basic/override/index.html | 53 +++++++++++ .../pages/this-is-a-test-hidden-page.html | 3 +- .../basic/pages/this-is-a-test-page.html | 3 +- tests/output/basic/second-article-fr.html | 3 +- tests/output/basic/second-article.html | 3 +- tests/output/basic/tag/bar.html | 3 +- tests/output/basic/tag/baz.html | 3 +- tests/output/basic/tag/foo.html | 3 +- tests/output/basic/tag/foobar.html | 3 +- tests/output/basic/tag/oh.html | 3 +- tests/output/basic/tag/yeah.html | 3 +- .../output/basic/this-is-a-super-article.html | 3 +- tests/output/basic/unbelievable.html | 3 +- .../custom/a-markdown-powered-article.html | 3 +- tests/output/custom/archives.html | 3 +- tests/output/custom/article-1.html | 3 +- tests/output/custom/article-2.html | 3 +- tests/output/custom/article-3.html | 3 +- .../custom/author/alexis-metaireau.html | 3 +- .../custom/author/alexis-metaireau2.html | 3 +- .../custom/author/alexis-metaireau3.html | 3 +- tests/output/custom/categories.html | 3 +- tests/output/custom/category/bar.html | 3 +- tests/output/custom/category/cat1.html | 3 +- tests/output/custom/category/misc.html | 3 +- tests/output/custom/category/yeah.html | 3 +- .../output/custom/drafts/a-draft-article.html | 3 +- .../custom/filename_metadata-example.html | 3 +- tests/output/custom/index.html | 3 +- tests/output/custom/index2.html | 3 +- tests/output/custom/index3.html | 3 +- tests/output/custom/jinja2_template.html | 3 +- tests/output/custom/oh-yeah-fr.html | 3 +- tests/output/custom/oh-yeah.html | 3 +- tests/output/custom/override/index.html | 88 +++++++++++++++++++ .../pages/this-is-a-test-hidden-page.html | 3 +- .../custom/pages/this-is-a-test-page.html | 3 +- tests/output/custom/second-article-fr.html | 3 +- tests/output/custom/second-article.html | 3 +- tests/output/custom/tag/bar.html | 3 +- tests/output/custom/tag/baz.html | 3 +- tests/output/custom/tag/foo.html | 3 +- tests/output/custom/tag/foobar.html | 3 +- tests/output/custom/tag/oh.html | 3 +- tests/output/custom/tag/yeah.html | 3 +- .../custom/this-is-a-super-article.html | 3 +- tests/output/custom/unbelievable.html | 3 +- 62 files changed, 268 insertions(+), 59 deletions(-) create mode 100644 samples/content/pages/override_url_saveas.rst create mode 100644 tests/output/basic/override/index.html create mode 100644 tests/output/custom/override/index.html diff --git a/samples/content/pages/override_url_saveas.rst b/samples/content/pages/override_url_saveas.rst new file mode 100644 index 00000000..8a515f60 --- /dev/null +++ b/samples/content/pages/override_url_saveas.rst @@ -0,0 +1,9 @@ +Override url/save_as +#################### + +:date: 2012-12-07 +:url: override/ +:save_as: override/index.html + +Test page which overrides save_as and url so that this page will be generated +at a custom location. diff --git a/tests/output/basic/a-markdown-powered-article.html b/tests/output/basic/a-markdown-powered-article.html index 80a12212..9b9da171 100644 --- a/tests/output/basic/a-markdown-powered-article.html +++ b/tests/output/basic/a-markdown-powered-article.html @@ -22,7 +22,8 @@