From b6a45434cacb77c191ee9f431ec6c50efbdec4c3 Mon Sep 17 00:00:00 2001 From: sm4640 Date: Tue, 20 May 2025 00:06:10 +0900 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Feat:=20[#58]=20=EC=9D=B4=EB=AF=B8?= =?UTF-8?q?=EC=A7=80=20=ED=95=84=EB=93=9C=20=ED=8C=8C=EC=9D=BC=20=EA=B2=BD?= =?UTF-8?q?=EB=A1=9C=20=EB=8F=99=EC=A0=81=20=EC=83=9D=EC=84=B1=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95=20=EB=B0=8F=20=EA=B0=9D=EC=B2=B4=20=EC=82=AD=EC=A0=9C?= =?UTF-8?q?=20=EC=9D=98=EC=A1=B4=EC=84=B1=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- portfolios/models.py | 11 +++++++++-- projects/models.py | 9 ++++++++- users/models.py | 12 +++++++++--- 3 files changed, 26 insertions(+), 6 deletions(-) diff --git a/portfolios/models.py b/portfolios/models.py index ca8601e..f66ec11 100644 --- a/portfolios/models.py +++ b/portfolios/models.py @@ -2,6 +2,8 @@ from django.db import models from common.models.baseModels import BaseModel +from common.utils.fileManager import dynamic_upload_to + from django.contrib.postgres.fields import ArrayField from django.conf import settings @@ -16,8 +18,13 @@ class Portfolio(BaseModel): like_count = models.IntegerField(default=0) scrap_count = models.IntegerField(default=0) is_represent = models.BooleanField(default=False) - thumbnail = models.ImageField(upload_to='', blank=True) + thumbnail = models.ImageField(upload_to=dynamic_upload_to('portfolio', lambda instance: 'thumbnail'), blank=True) code_id = models.CharField(max_length=26, blank=True) owner = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='owned_portfolios', to_field="id") likers = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name='liked_portfolios', blank=True) - scrappers = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name='scrapped_portfolios', blank=True) \ No newline at end of file + scrappers = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name='scrapped_portfolios', blank=True) + + def delete(self, *args, **kwargs): + if self.thumbnail: + self.thumbnail.delete(save=False) + super().delete(*args, **kwargs) \ No newline at end of file diff --git a/projects/models.py b/projects/models.py index d034525..d03f375 100644 --- a/projects/models.py +++ b/projects/models.py @@ -3,6 +3,8 @@ from django.db import models from common.models.baseModels import BaseModel from common.models.choiceModels import InvitationStatus +from common.utils.fileManager import dynamic_upload_to + from django.contrib.postgres.fields import ArrayField from django.conf import settings @@ -20,12 +22,17 @@ class Project(BaseModel): like_count = models.IntegerField(default=0) scrap_count = models.IntegerField(default=0) is_represent = models.BooleanField(default=False) - thumbnail = models.ImageField(upload_to='', blank=True) + thumbnail = models.ImageField(upload_to=dynamic_upload_to('project', lambda instance: 'thumbnail'), blank=True) code_id = models.CharField(max_length=26, blank=True) owner = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='owned_projects', to_field="id") likers = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name='liked_projects', blank=True) scrappers = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name='scrapped_projects', blank=True) + def delete(self, *args, **kwargs): + if self.thumbnail: + self.thumbnail.delete(save=False) + super().delete(*args, **kwargs) + class ProjectTeamList(BaseModel): project = models.ForeignKey(Project, on_delete=models.CASCADE, related_name='team_project_member_list', to_field='id') user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='team_project_list',to_field='id') diff --git a/users/models.py b/users/models.py index ed643fd..3a24fad 100644 --- a/users/models.py +++ b/users/models.py @@ -2,6 +2,7 @@ from django.db import models from common.models.baseModels import BaseModel from common.models.choiceModels import GenderChoices, CertificateCodeUseType from common.utils.codeManger import set_expire +from common.utils.fileManager import dynamic_upload_to from django.contrib.postgres.fields import ArrayField from django.contrib.auth.models import AbstractBaseUser, BaseUserManager, PermissionsMixin @@ -51,8 +52,8 @@ class User(BaseModel, AbstractBaseUser, PermissionsMixin): skills = ArrayField(models.CharField(max_length=20), default=list, blank=True) external_links = ArrayField(models.TextField(), default=list, blank=True) short_bio = models.CharField(max_length=100, blank=True) - profile_image = models.ImageField(upload_to='', blank=True) - banner_image = models.ImageField(upload_to='', blank=True) + profile_image = models.ImageField(upload_to=dynamic_upload_to('user', lambda instance: 'profile'), blank=True) + banner_image = models.ImageField(upload_to=dynamic_upload_to('user', lambda instance: 'banner'), blank=True) is_staff = models.BooleanField(default=False) is_active = models.BooleanField(default=True) @@ -65,4 +66,9 @@ class User(BaseModel, AbstractBaseUser, PermissionsMixin): def __str__(self): return self.nickname - + def delete(self, *args, **kwargs): + if self.profile_image: + self.profile_image.delete(save=False) + if self.banner_image: + self.banner_image.delete(save=False) + super().delete(*args, **kwargs)