feat: small refactoring for building of urls

This commit is contained in:
Hazel 2025-04-15 12:16:37 +02:00
parent 0ca0fb90d6
commit 79c95a9ddb

View File

@ -91,17 +91,21 @@ class ArticleTranslation:
class ArticleOverview:
def __init__(self, directory: Path, url: str = ""):
def __init__(self, directory: Path, location_in_tree: Optional[List[str]] = None):
self.directory = directory
self.slug = self.directory.name
self.location_in_tree: List[str] = location_in_tree or []
self.location_in_tree.append(self.slug)
self.url = "/" + "/".join(self.location_in_tree)
self.dist_path = Path(DIST_DIRECTORY, *self.location_in_tree)
if self.slug in ARTICLE_LAKE:
logger.error("two articles have the same name at %s and %r", ARTICLE_LAKE[self.slug].directory, self.directory)
exit(1)
ARTICLE_LAKE[self.slug] = self
self.url: str = url + "/" + self.slug
self.dist_path = Path(DIST_DIRECTORY, self.url.strip("/"))
self.child_articles: List[ArticleOverview] = []
self.article_translations: List[ArticleTranslation] = []
@ -110,7 +114,10 @@ class ArticleOverview:
if c.is_file():
self.article_translations.append(ArticleTranslation(c, self))
elif c.is_dir():
self.child_articles.append(ArticleOverview(c, self.url))
self.child_articles.append(ArticleOverview(
directory=self.directory,
location_in_tree=self.location_in_tree,
))
# the tree is built
self.article_translations.sort(key=lambda a: a.priority, reverse=True)