add update date to SithFile model

This commit is contained in:
imperosol
2026-05-01 12:37:02 +02:00
parent 8a2eee113a
commit 3b5a9595a2
6 changed files with 74 additions and 10 deletions
+1 -1
View File
@@ -99,7 +99,7 @@ class PageAdmin(admin.ModelAdmin):
@admin.register(SithFile) @admin.register(SithFile)
class SithFileAdmin(admin.ModelAdmin): class SithFileAdmin(admin.ModelAdmin):
list_display = ("name", "owner", "size", "date", "is_in_sas") list_display = ("name", "owner", "size", "created_at", "is_in_sas")
autocomplete_fields = ("parent", "owner", "moderator") autocomplete_fields = ("parent", "owner", "moderator")
search_fields = ("name", "parent__name") search_fields = ("name", "parent__name")
@@ -0,0 +1,55 @@
# 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("created_at"))
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.RenameField(
model_name="sithfile", old_name="date", new_name="created_at"
),
migrations.AlterField(
model_name="sithfile",
name="created_at",
field=models.DateTimeField(auto_now_add=True, verbose_name="created at"),
),
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),
]
+4 -3
View File
@@ -853,7 +853,7 @@ class SithFile(models.Model):
User, User,
related_name="owned_files", related_name="owned_files",
verbose_name=_("owner"), verbose_name=_("owner"),
on_delete=models.CASCADE, on_delete=models.PROTECT,
) )
edit_groups = models.ManyToManyField( edit_groups = models.ManyToManyField(
Group, related_name="editable_files", verbose_name=_("edit group"), blank=True Group, related_name="editable_files", verbose_name=_("edit group"), blank=True
@@ -864,7 +864,8 @@ class SithFile(models.Model):
is_folder = models.BooleanField(_("is folder"), default=True, db_index=True) is_folder = models.BooleanField(_("is folder"), default=True, db_index=True)
mime_type = models.CharField(_("mime type"), max_length=30) mime_type = models.CharField(_("mime type"), max_length=30)
size = models.IntegerField(_("size"), default=0) size = models.IntegerField(_("size"), default=0)
date = models.DateTimeField(_("date"), default=timezone.now) created_at = models.DateTimeField(_("created at"), auto_now_add=True)
updated_at = models.DateTimeField(_("updated at"), auto_now=True)
is_moderated = models.BooleanField(_("is moderated"), default=False) is_moderated = models.BooleanField(_("is moderated"), default=False)
moderator = models.ForeignKey( moderator = models.ForeignKey(
User, User,
@@ -872,7 +873,7 @@ class SithFile(models.Model):
verbose_name=_("owner"), verbose_name=_("owner"),
null=True, null=True,
blank=True, blank=True,
on_delete=models.CASCADE, on_delete=models.SET_NULL,
) )
asked_for_removal = models.BooleanField(_("asked for removal"), default=False) asked_for_removal = models.BooleanField(_("asked for removal"), default=False)
is_in_sas = models.BooleanField( is_in_sas = models.BooleanField(
+2 -2
View File
@@ -20,7 +20,7 @@ from sas.models import Album, PeoplePictureRelation, Picture, PictureModerationR
@admin.register(Picture) @admin.register(Picture)
class PictureAdmin(admin.ModelAdmin): class PictureAdmin(admin.ModelAdmin):
list_display = ("name", "parent", "date", "size", "is_moderated") list_display = ("name", "parent", "created_at", "size", "is_moderated")
search_fields = ("name",) search_fields = ("name",)
autocomplete_fields = ("owner", "parent", "edit_groups", "view_groups", "moderator") autocomplete_fields = ("owner", "parent", "edit_groups", "view_groups", "moderator")
@@ -33,7 +33,7 @@ class PeoplePictureRelationAdmin(admin.ModelAdmin):
@admin.register(Album) @admin.register(Album)
class AlbumAdmin(admin.ModelAdmin): class AlbumAdmin(admin.ModelAdmin):
list_display = ("name", "parent", "date", "owner", "is_moderated") list_display = ("name", "parent", "created_at", "owner", "is_moderated")
search_fields = ("name",) search_fields = ("name",)
autocomplete_fields = ("owner", "parent", "edit_groups", "view_groups") autocomplete_fields = ("owner", "parent", "edit_groups", "view_groups")
+1 -1
View File
@@ -96,7 +96,7 @@ class PicturesController(ControllerBase):
return ( return (
filters.filter(Picture.objects.viewable_by(user)) filters.filter(Picture.objects.viewable_by(user))
.distinct() .distinct()
.order_by("-parent__date", "date") .order_by("-parent__created_at", "created_at")
.select_related("owner", "parent") .select_related("owner", "parent")
) )
+11 -3
View File
@@ -59,8 +59,8 @@ class AlbumAutocompleteSchema(ModelSchema):
class PictureFilterSchema(FilterSchema): class PictureFilterSchema(FilterSchema):
before_date: Annotated[datetime | None, FilterLookup("date__lte")] = None before_date: Annotated[datetime | None, FilterLookup("created_at__lte")] = None
after_date: Annotated[datetime | None, FilterLookup("date__gte")] = None after_date: Annotated[datetime | None, FilterLookup("created_at__gte")] = None
users_identified: Annotated[ users_identified: Annotated[
set[int] | None, FilterLookup("people__user_id__in") set[int] | None, FilterLookup("people__user_id__in")
] = None ] = None
@@ -70,7 +70,15 @@ class PictureFilterSchema(FilterSchema):
class PictureSchema(ModelSchema): class PictureSchema(ModelSchema):
class Meta: class Meta:
model = Picture model = Picture
fields = ["id", "name", "date", "size", "is_moderated", "asked_for_removal"] fields = [
"id",
"name",
"created_at",
"updated_at",
"size",
"is_moderated",
"asked_for_removal",
]
owner: UserProfileSchema owner: UserProfileSchema
sas_url: str sas_url: str