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):