]> git.ipfire.org Git - thirdparty/paperless-ngx.git/commitdiff
Fix: created date fixes in v2.16 (#10026)
authorshamoon <4887959+shamoon@users.noreply.github.com>
Sat, 24 May 2025 16:45:07 +0000 (09:45 -0700)
committerGitHub <noreply@github.com>
Sat, 24 May 2025 16:45:07 +0000 (09:45 -0700)
src/documents/migrations/1067_alter_document_created.py
src/documents/migrations/1068_alter_document_created.py [new file with mode: 0644]
src/documents/models.py

index 82736f980b4abfb54403b3fb2efe5475f353bebc..c2c4af53185bcebae61ea5a002992763d35c138b 100644 (file)
@@ -5,28 +5,41 @@ import datetime
 
 from django.db import migrations
 from django.db import models
-from django.db.models.functions import TruncDate
+from django.utils.timezone import localtime
 
 
 def migrate_date(apps, schema_editor):
     Document = apps.get_model("documents", "Document")
-    queryset = Document.objects.annotate(
-        truncated_created=TruncDate("created"),
-    ).values("id", "truncated_created")
 
     # Batch to avoid loading all objects into memory at once,
     # which would be problematic for large datasets.
     batch_size = 500
     updates = []
-    for item in queryset.iterator(chunk_size=batch_size):
-        updates.append(
-            Document(id=item["id"], created_date=item["truncated_created"]),
-        )
+    total_updated = 0
+    total_checked = 0
+
+    for doc in Document.objects.only("id", "created").iterator(chunk_size=batch_size):
+        total_checked += 1
+        if doc.created:
+            doc.created_date = localtime(doc.created).date()
+            updates.append(doc)
+
         if len(updates) >= batch_size:
             Document.objects.bulk_update(updates, ["created_date"])
+            total_updated += len(updates)
+            print(
+                f"[1067_alter_document_created] {total_updated} of {total_checked} processed...",
+            )
             updates.clear()
+
     if updates:
         Document.objects.bulk_update(updates, ["created_date"])
+        total_updated += len(updates)
+        print(
+            f"[1067_alter_document_created] {total_updated} of {total_checked} processed...",
+        )
+
+    print(f"[1067_alter_document_created] completed for {total_checked} documents.")
 
 
 class Migration(migrations.Migration):
diff --git a/src/documents/migrations/1068_alter_document_created.py b/src/documents/migrations/1068_alter_document_created.py
new file mode 100644 (file)
index 0000000..b673f65
--- /dev/null
@@ -0,0 +1,24 @@
+# Generated by Django 5.1.8 on 2025-05-23 05:50
+
+import datetime
+
+from django.db import migrations
+from django.db import models
+
+
+class Migration(migrations.Migration):
+    dependencies = [
+        ("documents", "1067_alter_document_created"),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name="document",
+            name="created",
+            field=models.DateField(
+                db_index=True,
+                default=datetime.date.today,
+                verbose_name="created",
+            ),
+        ),
+    ]
index 17d1035ddcb3da0bc1b869bec33f98d8dd329f28..e93f140543403579c02f7962192ad374768a5484 100644 (file)
@@ -215,7 +215,7 @@ class Document(SoftDeleteModel, ModelWithOwner):
 
     created = models.DateField(
         _("created"),
-        default=datetime.datetime.today,
+        default=datetime.date.today,
         db_index=True,
     )