mirror of
https://github.com/ae-utbm/sith.git
synced 2026-05-01 11:06:06 +00:00
add update date to SithFile model
This commit is contained in:
+1
-1
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user