✨ Feat: [#58] 이미지 필드 파일 경로 동적 생성 설정 및 객체 삭제 의존성 설정
This commit is contained in:
@@ -2,6 +2,8 @@ from django.db import models
|
|||||||
|
|
||||||
from common.models.baseModels import BaseModel
|
from common.models.baseModels import BaseModel
|
||||||
|
|
||||||
|
from common.utils.fileManager import dynamic_upload_to
|
||||||
|
|
||||||
from django.contrib.postgres.fields import ArrayField
|
from django.contrib.postgres.fields import ArrayField
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
|
||||||
@@ -16,8 +18,13 @@ class Portfolio(BaseModel):
|
|||||||
like_count = models.IntegerField(default=0)
|
like_count = models.IntegerField(default=0)
|
||||||
scrap_count = models.IntegerField(default=0)
|
scrap_count = models.IntegerField(default=0)
|
||||||
is_represent = models.BooleanField(default=False)
|
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)
|
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")
|
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)
|
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)
|
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)
|
||||||
@@ -3,6 +3,8 @@ from django.db import models
|
|||||||
from common.models.baseModels import BaseModel
|
from common.models.baseModels import BaseModel
|
||||||
from common.models.choiceModels import InvitationStatus
|
from common.models.choiceModels import InvitationStatus
|
||||||
|
|
||||||
|
from common.utils.fileManager import dynamic_upload_to
|
||||||
|
|
||||||
from django.contrib.postgres.fields import ArrayField
|
from django.contrib.postgres.fields import ArrayField
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
|
||||||
@@ -20,12 +22,17 @@ class Project(BaseModel):
|
|||||||
like_count = models.IntegerField(default=0)
|
like_count = models.IntegerField(default=0)
|
||||||
scrap_count = models.IntegerField(default=0)
|
scrap_count = models.IntegerField(default=0)
|
||||||
is_represent = models.BooleanField(default=False)
|
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)
|
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")
|
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)
|
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)
|
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):
|
class ProjectTeamList(BaseModel):
|
||||||
project = models.ForeignKey(Project, on_delete=models.CASCADE, related_name='team_project_member_list', to_field='id')
|
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')
|
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='team_project_list',to_field='id')
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ from django.db import models
|
|||||||
from common.models.baseModels import BaseModel
|
from common.models.baseModels import BaseModel
|
||||||
from common.models.choiceModels import GenderChoices, CertificateCodeUseType
|
from common.models.choiceModels import GenderChoices, CertificateCodeUseType
|
||||||
from common.utils.codeManger import set_expire
|
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.postgres.fields import ArrayField
|
||||||
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager, PermissionsMixin
|
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)
|
skills = ArrayField(models.CharField(max_length=20), default=list, blank=True)
|
||||||
external_links = ArrayField(models.TextField(), default=list, blank=True)
|
external_links = ArrayField(models.TextField(), default=list, blank=True)
|
||||||
short_bio = models.CharField(max_length=100, blank=True)
|
short_bio = models.CharField(max_length=100, blank=True)
|
||||||
profile_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='', blank=True)
|
banner_image = models.ImageField(upload_to=dynamic_upload_to('user', lambda instance: 'banner'), blank=True)
|
||||||
|
|
||||||
is_staff = models.BooleanField(default=False)
|
is_staff = models.BooleanField(default=False)
|
||||||
is_active = models.BooleanField(default=True)
|
is_active = models.BooleanField(default=True)
|
||||||
@@ -65,4 +66,9 @@ class User(BaseModel, AbstractBaseUser, PermissionsMixin):
|
|||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.nickname
|
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)
|
||||||
|
|||||||
Reference in New Issue
Block a user