diff --git a/inventory/models.py b/inventory/models.py index 82f19e1..7a51cd2 100644 --- a/inventory/models.py +++ b/inventory/models.py @@ -1,6 +1,9 @@ from django.db import models from django.urls import reverse from django.core.exceptions import ValidationError +import os +import uuid + from autoslug import AutoSlugField from website.validators import MaxFileSizeValidator from comments.models import AbstractComment @@ -36,6 +39,17 @@ class Tag(models.Model): 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): title = models.CharField(verbose_name="Nom de l'outil", max_length=256, 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") image = models.ImageField( - upload_to="game_img/", + upload_to=image_uuid_path, blank=True, verbose_name="image", help_text="L'image doit peser 512 Kio au maximum",