55 lines
1.4 KiB
Python
55 lines
1.4 KiB
Python
import pathlib
|
|
from uuid import uuid4
|
|
|
|
from django.conf import settings
|
|
from django.core.exceptions import ImproperlyConfigured
|
|
from django.urls import reverse
|
|
|
|
|
|
def file_generate_name(original_file_name):
|
|
extension = pathlib.Path(original_file_name).suffix
|
|
|
|
return f"{uuid4().hex}{extension}"
|
|
|
|
|
|
def file_generate_upload_path(instance, _filename):
|
|
return f"circledocuments/{instance.file_name}"
|
|
|
|
|
|
def file_generate_local_upload_url(*, file_id: str):
|
|
url = reverse("file_upload_local", kwargs={"file_id": file_id})
|
|
|
|
return url
|
|
|
|
|
|
def bytes_to_mib(value: int) -> float:
|
|
# 1 bytes = 9.5367431640625E-7 mebibytes
|
|
return value * 9.5367431640625e-7
|
|
|
|
|
|
def assert_settings(required_settings, error_message_prefix=""):
|
|
"""
|
|
Checks if each item from `required_settings` is present in Django settings
|
|
"""
|
|
not_present = []
|
|
values = {}
|
|
|
|
for required_setting in required_settings:
|
|
if not hasattr(settings, required_setting):
|
|
not_present.append(required_setting)
|
|
continue
|
|
|
|
values[required_setting] = getattr(settings, required_setting)
|
|
|
|
if not_present:
|
|
if not error_message_prefix:
|
|
error_message_prefix = "Required settings not found."
|
|
|
|
stringified_not_present = ", ".join(not_present)
|
|
|
|
raise ImproperlyConfigured(
|
|
f"{error_message_prefix} Could not find: {stringified_not_present}"
|
|
)
|
|
|
|
return values
|