Newer
Older
def __init__(self, config, context, factories):
def generate_context(self):
# files
self.context['files'] = self.factories['file'].all()
for lang in self.config['lang']['supported']:
for slug, page in pages[lang].items():
if page.status == "published":
published_pages.append(page)
# pages
all_pages = {}
for page in published_pages:
if page.lang not in all_pages:
all_pages[page.lang] = {}
if page.slug in all_pages[page.lang]:
raise Exception("duplicate language (",lang,") for slug '", slug ,"'")
all_pages[page.lang][page.slug] = page
self.context['pages'] = all_pages
# pages_modified
pages_modified = {}
for lang in self.config['lang']['supported']:
lang_pages = []
for page in published_pages:
if page.lang == lang:
lang_pages.append(page)
lang_pages.sort()
pages_modified[lang] = lang_pages
self.context['pages_modified'] = pages_modified
# TODO hidden pages
# TODO draft pages
# TODO authors
# tags
self.context['tags'] = self.factories['tag'].all()
# categories
self.context['categories'] = {}
for lang in self.config['lang']['supported']:
self.context['categories'][lang] = {}
for tag in self.context['tags'][lang].values():
if tag.is_category:
self.context['categories'][lang][tag.name] = tag
self.context['build_date'] = datatypes.Date("now", self.config)
# relevant_pages
relevant_pages_tuple = []
for page in published_pages:
if page.relevance['is_relevant']:
relevant_pages_tuple.append((page.relevance['prio'], page))
relevant_pages_tuple.sort(key=lambda x: x[0])
for prio, page in relevant_pages_tuple:
if page.lang not in relevant_pages:
relevant_pages[page.lang] = []
relevant_pages[page.lang].append(page)
self.context['relevant_pages'] = relevant_pages
self.context['relevant_pages_tuple'] = relevant_pages_tuple
page = self.context['pages'][lang][self.config['homepage_slug']]
writer.write_template(page.template, path , lang, {'page': page}, page.config)
for fname, f in self.context['files'].items():
#print ("writing binary file: ", fname)
writer.write_file(f.link.path, f.rawcontents, mode="wb")
for lang in self.config['lang']['supported']:
# all pages
for page in self.context['pages'][lang].values():
writer.write_template(page.template, page.link.path, lang, {'page': page}, page.config)
for tag in self.context['tags'][lang].values():
writer.write_template('tag.html', tag.link.path, lang, {'tag': tag}, tag.config)
# homepages for languages
self.generate_homepage(writer, lang, lang + "/index.html")