fest(inventory): Improve game image names generation

This commit is contained in:
sinavir 2024-07-04 18:17:19 +02:00
parent e050c45530
commit fe0dc46988

View file

@ -1,6 +1,9 @@
from django.db import models from django.db import models
from django.urls import reverse from django.urls import reverse
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
import os
import uuid
from autoslug import AutoSlugField from autoslug import AutoSlugField
from website.validators import MaxFileSizeValidator from website.validators import MaxFileSizeValidator
from comments.models import AbstractComment from comments.models import AbstractComment
@ -36,6 +39,17 @@ class Tag(models.Model):
return reverse("inventory:tag", args=(self.slug,)) return reverse("inventory:tag", args=(self.slug,))
def image_uuid_path(instance, filename):
"""
Compute filename for game images as follow:
game_img/{random_uuid}.{extension}
"""
ext = filename.split(".")[-1]
filename = "%s.%s" % (uuid.uuid4(), ext)
return os.path.join("uploads/logos", filename)
class Game(models.Model): class Game(models.Model):
title = models.CharField(verbose_name="Nom de l'outil", max_length=256, unique=True) title = models.CharField(verbose_name="Nom de l'outil", max_length=256, unique=True)
slug = AutoSlugField(populate_from="title", unique=True) slug = AutoSlugField(populate_from="title", unique=True)
@ -47,7 +61,7 @@ class Game(models.Model):
description = models.TextField(blank=True, verbose_name="description") description = models.TextField(blank=True, verbose_name="description")
image = models.ImageField( image = models.ImageField(
upload_to="game_img/", upload_to=image_uuid_path,
blank=True, blank=True,
verbose_name="image", verbose_name="image",
help_text="L'image doit peser 512 Kio au maximum", help_text="L'image doit peser 512 Kio au maximum",