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)