import os from django.db import models from django.utils.translation import gettext_lazy as _ from rules import always_allow from rules.contrib.models import RulesModel from outbo.apps.core.models import TimestampableDeletableMixin def filename(self, filename): return "/".join( ( "projects", self.item.brief.product.project.slug[1:], "photobriefing", filename, ) ) class BriefItemPhoto(TimestampableDeletableMixin, RulesModel): class Meta: rules_permissions = { "view": always_allow, } item = models.ForeignKey( verbose_name=_("brief item"), to="BriefItem", on_delete=models.CASCADE, related_name="photos", related_query_name="photo", ) file = models.ImageField(verbose_name=_("file"), upload_to=filename) @property def filename(self): return os.path.basename(self.file.name)