blob: e6d836caf6199bd7376e17778aaac9b58747806d (
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
26
27
28
29
30
31
32
33
34
|
import os
import datetime
import functools
from typing import List
from jinja2 import Template
import render
from post import Post, remove_drafts
class Atom(object):
template: Template
posts: List[Post]
def __init__(self, template: Template, posts: List[Post]) -> None:
self.template = template
self.posts = remove_drafts(posts)
@staticmethod
def _now() -> datetime.datetime:
now = datetime.datetime.now(datetime.timezone.utc)
return now.replace(microsecond=0)
@functools.cached_property
def updated(self) -> datetime.datetime:
if not self.posts:
return self._now()
return self.posts[0].metadata.updated
def generate(self, basedir: str) -> None:
atom = os.path.join(basedir, "atom.xml")
rendered = self.template.render(updated=self.updated, posts=self.posts)
render.write_file_content(atom, rendered)
|