feat: started cleaning up context

This commit is contained in:
Hazel Noack 2025-05-22 12:56:40 +02:00
parent 632f47e017
commit 036d5fb30a
3 changed files with 26 additions and 29 deletions

View File

@ -1,2 +1,2 @@
name="stsg"
datetime="2024-04-15 13:45:12.123456"
iso_date="2024-04-15 13:45:12.123456"

View File

@ -1,4 +1,6 @@
class config:
default_author = "anonymous"
class setup:
source_directory = "src"
dist_directory = "dist"

View File

@ -13,6 +13,7 @@ import jinja2
from functools import cached_property
from .definitions import *
from . import config
@ -127,12 +128,6 @@ def compile_cross_article_context(cross_article_context):
cross_article_context["link"] = f'<a href="{url}">{title}</a>'
class ArticleTranslationContext(TypedDict):
slug: str
name: str
datetime: str
author: str
url: str
class ArticleTranslation:
@ -239,20 +234,6 @@ class ArticleTranslation:
f.write(TEMPLATE["article_translation"].render(self.context))
class ArticleConfig(TypedDict):
slug: str
name: str
datetime: str
author: str
class ArticleContext(TypedDict):
slug: str
name: str
datetime: str
author: str
url: str
class Article:
directory: Path
@ -327,15 +308,29 @@ class Article:
logger.info("found %s at %s with the translations %s", self.slug, ".".join(list(self.slug_path)), ",".join(self.article_translations_map.keys()))
@cached_property
def modified_at(self) -> datetime:
if "iso_date" in self.config:
return datetime.fromisoformat(self.config["iso_date"])
"""
TODO
scann every article file and use the youngest article file
"""
return datetime.fromtimestamp(self.directory.stat().st_mtime)
@cached_property
def author(self) -> str:
return self.config.get("author", config.default_author)
def __init_context__(self):
self.context_shared["url"] = self.url
self.context_shared["slug"] = self.slug
modified_at = datetime.fromisoformat(self.config["datetime"]) if "datetime" in self.config else datetime.fromtimestamp(self.directory.stat().st_mtime)
self.context_shared["date"] = modified_at.strftime(config.formatting.datetime_format)
self.context_shared["iso_date"] = modified_at.isoformat()
self.context.update(self.context_shared)
self.context["slug"] = self.slug
self.context["name"] = self.name
self.context["url"] = self.url
self.context["date"] = self.modified_at.strftime(config.formatting.datetime_format)
self.context["iso_date"] = self.modified_at.isoformat()
self.context["author"] = self.author
self.cross_article_context.update(self.context_shared)
self.cross_article_context["title"] = self.context_shared["slug"]