From c693acf79d1542ae7c3699034c68a9da804dd6ae Mon Sep 17 00:00:00 2001 From: sm4640 Date: Thu, 5 Jun 2025 18:17:11 +0900 Subject: [PATCH] =?UTF-8?q?=E2=9C=8F=EF=B8=8F=20Fix:=20[#64]=20=EC=9D=B4?= =?UTF-8?q?=EB=AF=B8=EC=A7=80,=20=ED=8C=8C=EC=9D=BC=20=ED=95=84=EB=93=9C?= =?UTF-8?q?=20=EC=97=85=EB=A1=9C=EB=93=9C=20=EA=B2=BD=EB=A1=9C=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95=20=ED=95=A8=EC=88=98=20=EB=A7=88=EC=9D=B4=EA=B7=B8?= =?UTF-8?q?=EB=A0=88=EC=9D=B4=EC=85=98=20=EB=90=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/utils/fileManager.py | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/common/utils/fileManager.py b/common/utils/fileManager.py index 6a19d18..b51d7e6 100644 --- a/common/utils/fileManager.py +++ b/common/utils/fileManager.py @@ -1,18 +1,20 @@ import os +from django.utils.deconstruct import deconstructible -def dynamic_upload_to(prefix, field_name_func): - def wrapper(instance, filename): +@deconstructible +class DynamicUploadTo: + def __init__(self, prefix, field_name): + self.prefix = prefix + self.field_name = field_name + + def __call__(self, instance, filename): ext = filename.split('.')[-1] - field_name = field_name_func(instance) - - if prefix == 'user': - filename = f'{instance.nickname}-{field_name}.{ext}' + fname = self.field_name(instance) if callable(self.field_name) else self.field_name + if self.prefix == "user": + filename = f"{instance.nickname}-{fname}.{ext}" else: - filename = f'{instance.id}-{field_name}.{ext}' - - return os.path.join(prefix, filename) - - return wrapper + filename = f"{instance.id}-{fname}.{ext}" + return os.path.join(self.prefix, filename) def file_delete(obj, field): getattr(obj, field).delete(save=False)