add: core (01) драфт... работает!! Генерация SVG проходит!!!
This commit is contained in:
@@ -1,11 +1,69 @@
|
||||
from django.http import HttpRequest, HttpResponse
|
||||
from django.shortcuts import render
|
||||
from django.http import HttpRequest, HttpResponse, Http404
|
||||
from django.views.decorators.csrf import ensure_csrf_cookie
|
||||
from django.views.decorators.http import require_POST
|
||||
|
||||
# Create your views here.
|
||||
from .forms import HalftoneGenerateForm
|
||||
from .services.halftone import generate_halftone_svg
|
||||
|
||||
|
||||
@ensure_csrf_cookie
|
||||
def index(request: HttpRequest | None) -> HttpResponse:
|
||||
return render(request, 'index.html', {})
|
||||
return render(request, "index.html", {})
|
||||
|
||||
|
||||
def tmp(request: HttpRequest | None) -> HttpResponse:
|
||||
return render(request, 'tmp.html', {})
|
||||
return render(request, "tmp.html", {})
|
||||
|
||||
|
||||
@require_POST
|
||||
def generate(request: HttpRequest) -> HttpResponse:
|
||||
"""
|
||||
HTMX-эндпоинт для генерации гипнотического полутонового SVG на лету.
|
||||
Не сохраняет данные в БД (Zero-Disk / Zero-PII).
|
||||
"""
|
||||
form = HalftoneGenerateForm(request.POST, request.FILES)
|
||||
|
||||
if not form.is_valid():
|
||||
error_msg = next(iter(form.errors.values()))[0] if form.errors else "Ошибка параметров генерации"
|
||||
return render(request, "block/preview.html", {"error": error_msg})
|
||||
|
||||
image_file = form.cleaned_data["image"]
|
||||
shape = form.cleaned_data["shape"]
|
||||
cols = form.cleaned_data["cols"]
|
||||
max_radius = form.cleaned_data["max_radius"]
|
||||
blink = form.cleaned_data["blink"]
|
||||
rotation = form.cleaned_data["rotation"]
|
||||
scale = form.cleaned_data["scale"]
|
||||
angle = form.cleaned_data["angle"]
|
||||
|
||||
# Извлечение основного цвета (поддержка монотонной схемы)
|
||||
colors = request.POST.getlist("colors")
|
||||
primary_color = colors[0] if colors and colors[0] else "#a855ff"
|
||||
|
||||
try:
|
||||
svg_content = generate_halftone_svg(
|
||||
image=image_file,
|
||||
cols=cols,
|
||||
max_radius=max_radius,
|
||||
shape=shape,
|
||||
color=primary_color,
|
||||
blink=blink,
|
||||
rotation=rotation,
|
||||
scale=scale,
|
||||
angle=angle,
|
||||
)
|
||||
except Exception as e:
|
||||
return render(
|
||||
request,
|
||||
"block/preview.html",
|
||||
{"error": f"Сбой в матрице гипноза: {str(e)}"},
|
||||
)
|
||||
|
||||
return render(
|
||||
request,
|
||||
"block/preview.html",
|
||||
{
|
||||
"svg_content": svg_content,
|
||||
},
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user