From 8d6914b35a71d6f62d952f90e758f61aac6dee18 Mon Sep 17 00:00:00 2001 From: "j.vondoemming" <j.vondoemming@stud.uni-goettingen.de> Date: Sat, 15 Oct 2022 19:01:51 +0200 Subject: [PATCH] render hidden pages too --- fgs/generator.py | 35 +++++++++++++++++++++-------- theme/templates/macros/getters.html | 6 ++++- 2 files changed, 31 insertions(+), 10 deletions(-) diff --git a/fgs/generator.py b/fgs/generator.py index 1531922..bab0efc 100644 --- a/fgs/generator.py +++ b/fgs/generator.py @@ -12,21 +12,34 @@ class Generator: pages = self.factories['page'].all() published_pages = [] + hidden_pages = [] for lang in self.config['lang']['supported']: for slug, page in pages[lang].items(): if page.status == "published": published_pages.append(page) + elif page.status == "hidden": + hidden_pages.append(page) - # pages - all_pages = {} + # set context.pages from published_pages as a dict of languages containing dicts of slugs + all_published_pages = {} + for lang in self.config['lang']['supported']: + all_published_pages[lang] = {} for page in published_pages: - if page.lang not in all_pages: - all_pages[page.lang] = {} - if page.slug in all_pages[page.lang]: + if page.slug in all_published_pages[page.lang]: + raise Exception("duplicate language (",lang,") for slug '", slug ,"'") + all_published_pages[page.lang][page.slug] = page + self.context['pages'] = all_published_pages + + # set context.hidden_pages from hidden_pages as a dict of languages containing dicts of slugs + all_hidden_pages = {} + for lang in self.config['lang']['supported']: + all_hidden_pages[lang] = {} + for page in hidden_pages: + if page.slug in all_hidden_pages[page.lang]: raise Exception("duplicate language (",lang,") for slug '", slug ,"'") - all_pages[page.lang][page.slug] = page - self.context['pages'] = all_pages + all_hidden_pages[page.lang][page.slug] = page + self.context['hidden_pages'] = all_hidden_pages # pages_modified pages_modified = {} @@ -40,7 +53,6 @@ class Generator: pages_modified[lang] = lang_pages self.context['pages_modified'] = pages_modified - # TODO hidden pages # TODO draft pages # TODO authors @@ -88,10 +100,15 @@ class Generator: writer.write_file(f.link.path, f.rawcontents, mode="wb") for lang in self.config['lang']['supported']: - # all pages + # all published pages for page in self.context['pages'][lang].values(): writer.write_template(page.template, page.link.path, lang, {'page': page}, page.config) + # all hidden pages + for page in self.context['hidden_pages'][lang].values(): + #print(page.slug) + writer.write_template(page.template, page.link.path, lang, {'page': page}, page.config) + # all tags for tag in self.context['tags'][lang].values(): writer.write_template('tag.html', tag.link.path, lang, {'tag': tag}, tag.config) diff --git a/theme/templates/macros/getters.html b/theme/templates/macros/getters.html index 2ddbe4c..b682346 100644 --- a/theme/templates/macros/getters.html +++ b/theme/templates/macros/getters.html @@ -1,5 +1,9 @@ {%- macro page_by_slug(slug, lang) -%} - {{- caller(pages[lang][slug]) -}} + {%- if slug in pages[lang]-%} + {{- caller(pages[lang][slug]) -}} + {%- elif slug in hidden_pages[lang]-%} + {{- caller(hidden_pages[lang][slug]) -}} + {%- endif -%} {%- endmacro -%} {%- macro tag_by_name(name, lang) -%} -- GitLab