diff --git a/elections/migrations/0020_alter_electionshomepage_content.py b/elections/migrations/0020_alter_electionshomepage_content.py index b2eb4018344b8a93751a5351d5f05bb6546d67d1..2131e7bd2c1474ef849c03d508a4d3916955ebd4 100644 --- a/elections/migrations/0020_alter_electionshomepage_content.py +++ b/elections/migrations/0020_alter_electionshomepage_content.py @@ -1,9 +1,9 @@ # Generated by Django 4.1.10 on 2024-01-21 19:46 -from django.db import migrations import wagtail.blocks import wagtail.fields import wagtail.images.blocks +from django.db import migrations class Migration(migrations.Migration): diff --git a/shared/jekyll_import.py b/shared/jekyll_import.py index f95d2c45ce5a4347be628494e1922a3ce21d8b0c..786a3489d6986ae693b8faf4fdea43ec1bd1bcae 100644 --- a/shared/jekyll_import.py +++ b/shared/jekyll_import.py @@ -8,6 +8,7 @@ import urllib import xml.etree.ElementTree as ET import zipfile from datetime import date, datetime +from datetime import timezone as datetime_timezone from http.client import InvalidURL from io import StringIO from typing import List @@ -611,15 +612,16 @@ class JekyllArticleImporter: if meta.get("date", None): meta_date = meta["date"] + if isinstance(meta_date, date): - article.date = meta_date + article.timestamp = datetime( + meta_date.year, meta_date.month, meta_date.day + ).replace(tzinfo=datetime_timezone.utc) else: parsed_date = meta["date"].split()[0] - article.date = ( - parsed_date[0:10] if parsed_date else timezone.now().date() - ) + article.timestamp = parsed_date[0:10] if parsed_date else timezone.now() else: - article.date = timezone.now().date() + article.timestamp = timezone.now() article.title = meta["title"] article.author = meta.get("author", "Česká pirátská strana") @@ -694,7 +696,10 @@ class JekyllArticleImporter: self.create_summary_log() finally: - os.remove(f"/tmp/.{self.article_parent_page_id}.import-lock") + import_lock_filename = f"/tmp/.{self.article_parent_page_id}.import-lock" + + if os.path.exists(import_lock_filename): + os.remove(import_lock_filename) def process_article(self, file_name: str, file_path: str): match = re.match(r"(\d*)-(\d*)-(\d*)-(.*)\.(.*)", file_name) diff --git a/shared/models/base.py b/shared/models/base.py index 93a977ffffbc80f8b6346687159e347fa5b5bde0..59d814153cc0d190b40a1cf77fe2655ca2754430 100644 --- a/shared/models/base.py +++ b/shared/models/base.py @@ -9,6 +9,7 @@ from django.core.paginator import Paginator from django.db import models from django.db.models import Q from django.db.models.expressions import F, Subquery, Value +from django.http import Http404 from django.utils import timezone from modelcluster.fields import ParentalKey, ParentalManyToManyField from taggit.models import ItemBase, Tag, TagBase @@ -803,6 +804,10 @@ class ArticlesMixin: articles = self.append_all_shared_articles_query( custom_article_query=lambda query: query.filter(slug=slug) )[:1] + + if len(articles) == 0: + raise Http404 + return self.materialize_shared_articles_query(articles)[0] def setup_article_page_context(self, request):