From 060dde78e7ffa27bc4b0f703b42c36f09cab3f1a Mon Sep 17 00:00:00 2001
From: imperosol
Date: Fri, 1 May 2026 12:37:02 +0200
Subject: [PATCH] add update date to SithFile model
---
com/tests/test_notifications.py | 3 +-
.../0050_alter_sithfile_moderator.py | 47 +++++++++++++++++++
core/models.py | 5 +-
core/templates/core/file_moderation.jinja | 3 +-
core/tests/test_user.py | 3 +-
matmat/tests.py | 3 +-
sas/models.py | 24 ++++++++--
sas/schemas.py | 10 +++-
sas/templates/sas/picture.jinja | 39 ++++++++++-----
9 files changed, 114 insertions(+), 23 deletions(-)
create mode 100644 core/migrations/0050_alter_sithfile_moderator.py
diff --git a/com/tests/test_notifications.py b/com/tests/test_notifications.py
index 8ddbfcb3..fc0e6aee 100644
--- a/com/tests/test_notifications.py
+++ b/com/tests/test_notifications.py
@@ -7,7 +7,7 @@ from model_bakery import baker
from com.models import News, NewsDate
from core.baker_recipes import subscriber_user
-from core.models import Group, Notification, User
+from core.models import Group, Notification, SithFile, User
@pytest.mark.django_db
@@ -18,6 +18,7 @@ def test_notification_created():
past_news = baker.make(News, is_published=False)
baker.make(NewsDate, news=past_news, start_date=now() - timedelta(days=1))
com_admin_group = Group.objects.get(pk=settings.SITH_GROUP_COM_ADMIN_ID)
+ SithFile.objects.filter(owner__in=com_admin_group.users.all()).delete()
com_admin_group.users.all().delete()
Notification.objects.all().delete()
com_admin = baker.make(User, groups=[com_admin_group])
diff --git a/core/migrations/0050_alter_sithfile_moderator.py b/core/migrations/0050_alter_sithfile_moderator.py
new file mode 100644
index 00000000..0b6e9ef1
--- /dev/null
+++ b/core/migrations/0050_alter_sithfile_moderator.py
@@ -0,0 +1,47 @@
+# Generated by Django 5.2.12 on 2026-05-01 08:59
+
+import django.db.models.deletion
+from django.conf import settings
+from django.db import migrations, models
+from django.db.migrations.state import StateApps
+from django.db.models import F
+
+
+def set_updated_at(apps: StateApps, schema_editor):
+ SithFile = apps.get_model("core", "SithFile")
+ SithFile.objects.update(updated_at=F("date"))
+
+
+class Migration(migrations.Migration):
+ dependencies = [("core", "0049_user_whitelisted_users")]
+
+ operations = [
+ migrations.AlterField(
+ model_name="sithfile",
+ name="moderator",
+ field=models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="moderated_files",
+ to=settings.AUTH_USER_MODEL,
+ verbose_name="owner",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="sithfile",
+ name="owner",
+ field=models.ForeignKey(
+ on_delete=django.db.models.deletion.PROTECT,
+ related_name="owned_files",
+ to=settings.AUTH_USER_MODEL,
+ verbose_name="owner",
+ ),
+ ),
+ migrations.AddField(
+ model_name="sithfile",
+ name="updated_at",
+ field=models.DateTimeField(auto_now=True, verbose_name="updated at"),
+ ),
+ migrations.RunPython(set_updated_at, reverse_code=migrations.RunPython.noop),
+ ]
diff --git a/core/models.py b/core/models.py
index ffbdebfc..208f1937 100644
--- a/core/models.py
+++ b/core/models.py
@@ -853,7 +853,7 @@ class SithFile(models.Model):
User,
related_name="owned_files",
verbose_name=_("owner"),
- on_delete=models.CASCADE,
+ on_delete=models.PROTECT,
)
edit_groups = models.ManyToManyField(
Group, related_name="editable_files", verbose_name=_("edit group"), blank=True
@@ -865,6 +865,7 @@ class SithFile(models.Model):
mime_type = models.CharField(_("mime type"), max_length=30)
size = models.IntegerField(_("size"), default=0)
date = models.DateTimeField(_("date"), default=timezone.now)
+ updated_at = models.DateTimeField(_("updated at"), auto_now=True)
is_moderated = models.BooleanField(_("is moderated"), default=False)
moderator = models.ForeignKey(
User,
@@ -872,7 +873,7 @@ class SithFile(models.Model):
verbose_name=_("owner"),
null=True,
blank=True,
- on_delete=models.CASCADE,
+ on_delete=models.SET_NULL,
)
asked_for_removal = models.BooleanField(_("asked for removal"), default=False)
is_in_sas = models.BooleanField(
diff --git a/core/templates/core/file_moderation.jinja b/core/templates/core/file_moderation.jinja
index ba9d03d4..fb69ede1 100644
--- a/core/templates/core/file_moderation.jinja
+++ b/core/templates/core/file_moderation.jinja
@@ -33,7 +33,8 @@
{{ f.name }}
{% trans %}Full name: {% endtrans %}{{ f.get_parent_path()+'/'+f.name }}
{% trans %}Owner: {% endtrans %}{{ f.owner.get_display_name() }}
- {% trans %}Date: {% endtrans %}{{ f.date|date(DATE_FORMAT) }} {{ f.date|time(TIME_FORMAT) }}
+ {% trans %}Date: {% endtrans %}
+ {{ f.date|date(DATE_FORMAT) }} {{ f.date|time(TIME_FORMAT) }}