refactor: extract generation core service

This commit is contained in:
QiuSW
2026-07-08 21:24:59 +08:00
parent 12717d09e8
commit c98f713762
11 changed files with 438 additions and 160 deletions
+9 -1
View File
@@ -1,5 +1,6 @@
from __future__ import annotations
from typing import Callable
from uuid import uuid4
from django.core.files.base import ContentFile
@@ -7,7 +8,12 @@ from django.core.files.storage import default_storage
from django.utils import timezone
def save_generated_image(image: bytes, *, request=None) -> str:
def save_generated_image(
image: bytes,
*,
url_builder: Callable[[str], str] | None = None,
request=None,
) -> str:
today = timezone.now()
path = (
"generated/images/"
@@ -16,6 +22,8 @@ def save_generated_image(image: bytes, *, request=None) -> str:
)
saved_path = default_storage.save(path, ContentFile(image))
url = default_storage.url(saved_path)
if url_builder is not None and url.startswith("/"):
return url_builder(url)
if request is not None and url.startswith("/"):
return request.build_absolute_uri(url)
return url