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