summaryrefslogtreecommitdiff
path: root/blog/feed.py
blob: 3e5b2e0636bbee6b60f6d638ad7ec01e0370f574 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import os
from typing import List

from jinja2 import Template

import render
from post import Post


class Feed(object):
    template: Template
    posts: List[Post]

    def __init__(self, template: Template, posts: List[Post]) -> None:
        self.template = template
        self.posts = Feed._remove_drafts(posts)

    @staticmethod
    def _remove_drafts(posts: List[Post]) -> List[Post]:
        return list(filter(lambda x: x.metadata.status != "draft", posts))

    def generate(self, basedir: str) -> None:
        index = os.path.join(basedir, "index.html")
        rendered = self.template.render(posts=self.posts)
        render.write_file_content(index, rendered)