Sort articles and advisories by date (newest first)

This commit is contained in:
Daniele Linguaglossa 2026-01-21 21:36:00 +01:00
parent 2eab602ac4
commit feeb6a9aba

View File

@ -7,6 +7,15 @@ import glob
import yaml import yaml
import sys import sys
import os import os
from dateutil import parser as dateparser
def parse_date(date_value):
"""Parse date from string or return date object as-is."""
if isinstance(date_value, (datetime.date, datetime.datetime)):
return date_value
if isinstance(date_value, str) and date_value:
return dateparser.parse(date_value)
return datetime.datetime.min
def directory_exists(directory) -> bool: def directory_exists(directory) -> bool:
return os.path.exists(directory) return os.path.exists(directory)
@ -27,6 +36,8 @@ def find_articles(resources) -> list:
# append link to the article # append link to the article
article_data['link'] = f"/articles/{os.path.basename(article).replace('.md', '.html')}" article_data['link'] = f"/articles/{os.path.basename(article).replace('.md', '.html')}"
articles.append(article_data) articles.append(article_data)
# Sort by date, newest first
articles.sort(key=lambda x: parse_date(x.get('date')), reverse=True)
return articles return articles
def find_advisories(resources) -> list: def find_advisories(resources) -> list:
@ -44,6 +55,8 @@ def find_advisories(resources) -> list:
# append link to the advisory # append link to the advisory
advisory_data['link'] = f"/advisory/{os.path.basename(advisory)}" advisory_data['link'] = f"/advisory/{os.path.basename(advisory)}"
advisories.append(advisory_data) advisories.append(advisory_data)
# Sort by date, newest first
advisories.sort(key=lambda x: parse_date(x.get('date')), reverse=True)
return advisories return advisories
def find_projects(resources) -> list: def find_projects(resources) -> list:
@ -67,7 +80,7 @@ def main(args):
parser.add_argument("--blog-title", type=str, help="Title of the blog", required=True) parser.add_argument("--blog-title", type=str, help="Title of the blog", required=True)
parser.add_argument("--blog-author", type=str, help="Author of the blog", required=True) parser.add_argument("--blog-author", type=str, help="Author of the blog", required=True)
args = parser.parse_args(args) args = parser.parse_args(args)
# check if the resources directory exists # check if the resources directory exists
resources = args.resources resources = args.resources
@ -77,7 +90,7 @@ def main(args):
articles = find_articles(resources) articles = find_articles(resources)
advisories = find_advisories(resources) advisories = find_advisories(resources)
projects = find_projects(resources) projects = find_projects(resources)
blog = { blog = {
'title': args.blog_title, 'title': args.blog_title,
'author': args.blog_author, 'author': args.blog_author,
@ -92,4 +105,4 @@ def main(args):
file.write(tmpl.render(articles=articles, advisories=advisories, projects=projects, blog=blog)) file.write(tmpl.render(articles=articles, advisories=advisories, projects=projects, blog=blog))
if __name__ == '__main__': if __name__ == '__main__':
main(sys.argv[1:]) main(sys.argv[1:])