Add HTMX endpoint for truncating series images and corresponding result template

This commit is contained in:
Ross
2026-02-02 13:24:27 +00:00
parent 8911c09c0e
commit 5bb2aea8ef
4 changed files with 56 additions and 2 deletions
+37
View File
@@ -196,6 +196,43 @@ from helpers.cimar import CimarAPI
logger = logging.getLogger(__name__)
@login_required
def series_truncate_htmx(request, series_id, start, end):
"""HTMX endpoint to truncate a series' images to the given inclusive
start/end bounds (zero-based). Returns an HTML fragment with the result.
"""
series = get_object_or_404(Series, pk=series_id)
if not series.check_user_can_edit(request.user):
return HttpResponse("<div class=\"alert alert-danger\">Permission denied</div>")
images_removed = []
for n, image in enumerate(series.get_images()):
if n >= int(start) and n <= int(end):
# keep images within bounds
continue
else:
image.removed = True
image.image = None
image.save()
images_removed.append(image.pk)
# Recalculate stored series size
try:
series.get_total_image_size(refresh=True)
except Exception:
# ignore errors when recalculating
pass
# Render a simple message fragment for HTMX swap
html = render_to_string(
"atlas/partials/truncate_result.html",
{"images_removed": images_removed, "series": series},
request=request,
)
return HttpResponse(html)
@login_required
def case_search_partial(request):
"""Return an HTMX partial listing cases matching the query parameter `q`.