Compare commits

..

5 Commits

3 changed files with 25 additions and 7 deletions

View File

@ -16,6 +16,7 @@
<div class="navbar-brand"> <div class="navbar-brand">
<a class="navbar-item" href="{article_overview_url}"> <a class="navbar-item" href="{article_overview_url}">
<strong>{article_language_flag} {article_title}</strong> <strong>{article_language_flag} {article_title}</strong>
<span>{article_datetime}</span>
</a> </a>
</div> </div>
</nav> </nav>

View File

@ -1,8 +1,12 @@
<div class="card mb-4" lang="{article_language_code}"> <div class="card mb-4" lang="{article_language_code}">
<a href="{article_url}" hreflang="{article_language_code}" class="card mb-4" style="color: inherit; text-decoration: none;"> <a href="{article_url}" hreflang="{article_language_code}" class="card mb-4" style="color: inherit; text-decoration: none;">
<div class="card-content"> <div class="card-content">
<p class="title">{article_language_flag} {article_title}</p> <p class="title">{article_language_flag} {article_title} </p>
<p class="content">{article_preview}</p> <p class="content">
{article_preview}
<br />
<time>{article_datetime}</time>
</p>
</div> </div>
</a> </a>
</div> </div>

View File

@ -7,6 +7,8 @@ import markdown
from typing import Optional, Union, Dict, Generator, List, DefaultDict from typing import Optional, Union, Dict, Generator, List, DefaultDict
from bs4 import BeautifulSoup from bs4 import BeautifulSoup
from collections import defaultdict from collections import defaultdict
import toml
import datetime
from . import config from . import config
@ -82,6 +84,7 @@ class ArticleTranslation:
"article_overview_url": self.article_overview.url, "article_overview_url": self.article_overview.url,
"article_slug": self.article_overview.slug, "article_slug": self.article_overview.slug,
"article_title": self.title, "article_title": self.title,
"article_datetime": self.article_overview.article_written.strftime(config.formatting.datetime_format),
"article_language_name": self.language_name, "article_language_name": self.language_name,
"article_language_code": self.language_code, "article_language_code": self.language_code,
"article_language_flag": self.language_flag, "article_language_flag": self.language_flag,
@ -109,14 +112,20 @@ class ArticleTranslation:
class ArticleOverview: class ArticleOverview:
def __init__(self, directory: Path, location_in_tree: Optional[List[str]] = None): def __init__(self, directory: Path, location_in_tree: Optional[List[str]] = None, is_root: bool = False):
self.directory = directory self.directory = directory
self.slug = self.directory.name
self.article_written = self.directory.stat().st_mtime article_config = {}
if (self.directory / "index.toml").exists():
article_config = toml.load(self.directory / "index.toml")
self.slug = article_config.get("name", self.directory.name)
self.article_written = datetime.datetime.fromisoformat(article_config["datetime"]) if "datetime" in article_config else datetime.datetime.fromtimestamp(self.directory.stat().st_mtime)
self.location_in_tree: List[str] = location_in_tree or [] self.location_in_tree: List[str] = location_in_tree or []
self.location_in_tree.append(self.slug) if not is_root:
self.location_in_tree.append(self.slug)
self.url = "/" + "/".join(self.location_in_tree) self.url = "/" + "/".join(self.location_in_tree)
self.dist_path = Path(config.setup.dist_directory, *self.location_in_tree) self.dist_path = Path(config.setup.dist_directory, *self.location_in_tree)
@ -130,6 +139,9 @@ class ArticleOverview:
self.article_translations_map: Dict[str, ArticleTranslation] = {} self.article_translations_map: Dict[str, ArticleTranslation] = {}
for c in self.directory.iterdir(): for c in self.directory.iterdir():
if c.name == "index.toml":
continue
if c.is_file(): if c.is_file():
at = ArticleTranslation(c, self) at = ArticleTranslation(c, self)
self.article_translations.append(at) self.article_translations.append(at)
@ -163,6 +175,7 @@ class ArticleOverview:
"article_url": self.url, "article_url": self.url,
"article_title": self.slug, "article_title": self.slug,
"article_slug": self.slug, "article_slug": self.slug,
"article_datetime": self.article_written.strftime(config.formatting.datetime_format),
"article_overview_url": self.url, "article_overview_url": self.url,
"article_overview_cards": self.overview_cards, "article_overview_cards": self.overview_cards,
} }
@ -197,7 +210,7 @@ def build():
shutil.copytree(Path(config.setup.source_directory, "static"), Path(config.setup.dist_directory, "static"), dirs_exist_ok=True) shutil.copytree(Path(config.setup.source_directory, "static"), Path(config.setup.dist_directory, "static"), dirs_exist_ok=True)
logger.info("reading page tree...") logger.info("reading page tree...")
tree = ArticleOverview(directory=Path(config.setup.source_directory, "articles")) tree = ArticleOverview(directory=Path(config.setup.source_directory, "articles"), is_root=True)
# build article reverence values # build article reverence values
for article_overview in ARTICLE_LAKE.values(): for article_overview in ARTICLE_LAKE.values():