23 lines
741 B
Python
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])
|