vbv/server/vbv_lernwelt/files/utils.py

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