import uuid import enum from django.db import models from pycs_api.models import base from pycs_api.models.project import Project class Extensions(enum.Enum): JPG = ".jpg" JPEG = ".jpeg" PNG = ".png" def project_directory(instance: "File", filename: str): return f"uploads/{instance.project.id}/{filename}" class File(base.BaseModel): EXTENSIONS = [ (Extensions.JPG, "JPG Image"), (Extensions.JPEG, "JPEG Image"), (Extensions.PNG, "PNG Image"), ] uuid = models.UUIDField( default=uuid.uuid4 ) project = models.ForeignKey( Project, on_delete=models.CASCADE, ) extension = models.CharField( max_length=16, choices=EXTENSIONS ) size = models.PositiveIntegerField() created = models.DateTimeField(auto_now_add=True) path = models.ImageField(upload_to=project_directory) class Meta: unique_together = [ "project", "path" ]