Sort articles and advisories by date (newest first)
This commit is contained in:
parent
2eab602ac4
commit
feeb6a9aba
@ -7,6 +7,15 @@ import glob
|
||||
import yaml
|
||||
import sys
|
||||
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:
|
||||
return os.path.exists(directory)
|
||||
@ -27,6 +36,8 @@ def find_articles(resources) -> list:
|
||||
# append link to the article
|
||||
article_data['link'] = f"/articles/{os.path.basename(article).replace('.md', '.html')}"
|
||||
articles.append(article_data)
|
||||
# Sort by date, newest first
|
||||
articles.sort(key=lambda x: parse_date(x.get('date')), reverse=True)
|
||||
return articles
|
||||
|
||||
def find_advisories(resources) -> list:
|
||||
@ -44,6 +55,8 @@ def find_advisories(resources) -> list:
|
||||
# append link to the advisory
|
||||
advisory_data['link'] = f"/advisory/{os.path.basename(advisory)}"
|
||||
advisories.append(advisory_data)
|
||||
# Sort by date, newest first
|
||||
advisories.sort(key=lambda x: parse_date(x.get('date')), reverse=True)
|
||||
return advisories
|
||||
|
||||
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-author", type=str, help="Author of the blog", required=True)
|
||||
args = parser.parse_args(args)
|
||||
|
||||
|
||||
# check if the resources directory exists
|
||||
resources = args.resources
|
||||
|
||||
@ -77,7 +90,7 @@ def main(args):
|
||||
|
||||
articles = find_articles(resources)
|
||||
advisories = find_advisories(resources)
|
||||
projects = find_projects(resources)
|
||||
projects = find_projects(resources)
|
||||
blog = {
|
||||
'title': args.blog_title,
|
||||
'author': args.blog_author,
|
||||
@ -92,4 +105,4 @@ def main(args):
|
||||
file.write(tmpl.render(articles=articles, advisories=advisories, projects=projects, blog=blog))
|
||||
|
||||
if __name__ == '__main__':
|
||||
main(sys.argv[1:])
|
||||
main(sys.argv[1:])
|
||||
|
||||
Loading…
Reference in New Issue
Block a user