'
for post in posts:
disp_date = datetime.datetime.fromisoformat(post.get('date')).strftime('%Y-%m-%d')
out += post_tpl.format(href=post.get('destpath'),
title=post.get('title'),
date=post.get('date'),
disp_date=disp_date)
return out + '
'
def render_template(tpl_fname, out_fname, subs):
with open(tpl_fname, 'r', encoding='utf-8') as inf:
tmpl = Template(inf.read())
out = tmpl.substitute(subs)
with open(out_fname, 'w', encoding='utf-8') as outf:
outf.write(out)
def render_index(posts):
content_html = posts_list_html(posts)
render_template('index.html.tmpl', 'index.html', {'content': content_html, 'more_title': ''})
def rss_post_xml(post):
tpl = """
{title}
{link}
{pubdate}{link}{description}
"""
link = "https://cfebs.com/" + post['destpath']
with open(post['fpath'], 'r', encoding='utf-8') as inf:
text = inf.read()
converted, _ = convert(text)
pubdate = email.utils.format_datetime(datetime.datetime.fromisoformat(post['date']))
subs = {
'title': post['title'],
'link': link,
'pubdate': pubdate,
'description': converted
}
for k,v in subs.items():
subs[k] = html.escape(v)
return tpl.format(**subs)
def render_rss_index(posts):
items = ''
for post in posts[:5]:
items += rss_post_xml(post)
subs = {
'site_title': 'cfebs.com',
'site_link': 'https://cfebs.com',
'self_full_link': 'https://cfebs.com/index.xml',
'description': 'Recent content from cfebs.com',
'last_build_date': email.utils.format_datetime(datetime.datetime.now()),
}
for k,v in subs.items():
subs[k] = html.escape(v)
subs['items'] = items
render_template('index.xml.tmpl', 'index.xml', subs)
def main():
posts = render_posts()
logging.info('rendered posts: %s', posts)
posts = filter(lambda p: not p['draft'], posts)
sorted_posts = sorted(posts,
key=lambda p: datetime.datetime.fromisoformat(p['date']), reverse=True)
render_index(sorted_posts)
render_rss_index(sorted_posts)
if __name__ == '__main__':
main()