Files
colio/common/utils/fileManager.py

23 lines
741 B
Python

import os
from django.utils.deconstruct import deconstructible
@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]
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}-{fname}.{ext}"
return os.path.join(self.prefix, filename)
def file_delete(obj, field):
getattr(obj, field).delete(save=False)
setattr(obj, field, None)
obj.save(update_fields=[field])