From 970242e1fb7b8bc06f54275755996498d947a3e1 Mon Sep 17 00:00:00 2001 From: Ross Date: Thu, 13 Nov 2025 22:13:46 +0000 Subject: [PATCH] Refactor NormalCaseForm to prevent nested forms and enhance logging in case_normal_form and create_case_normal views --- atlas/forms.py | 7 ++++++- atlas/views.py | 13 +++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/atlas/forms.py b/atlas/forms.py index 89361c03..697133a4 100755 --- a/atlas/forms.py +++ b/atlas/forms.py @@ -246,8 +246,13 @@ class NormalCaseForm(ModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.helper = FormHelper() + # Do not render a
tag from crispy here because the template + # already provides the surrounding form element (we inject this + # fragment into a modal that contains the form). Rendering a second + # would nest forms and cause fields to be outside the + # submitted form (HTMX would only send the outer form's fields). self.helper.form_method = "post" - self.helper.form_tag = True + self.helper.form_tag = False self.helper.layout = Layout( Div( Field("age_years", wrapper_class="col-md-4"), diff --git a/atlas/views.py b/atlas/views.py index a2174953..8dfb084e 100755 --- a/atlas/views.py +++ b/atlas/views.py @@ -631,7 +631,16 @@ def case_normal_form(request, pk): "modality": inferred_modality, }) + # Log the rendered form HTML so we can verify inputs/names reach the client + from loguru import logger + try: + form_html = form.as_p() + logger.debug("case_normal_form rendered form HTML: {}", form_html) + except Exception as e: + logger.exception("Failed to render form.as_p(): {}", e) + html = render_to_string("atlas/partials/_normal_form.html", {"form": form, "case": case}, request=request) + logger.debug("case_normal_form returning HTML length: {}", len(html)) return HttpResponse(html) @@ -648,8 +657,12 @@ def create_case_normal(request, pk): return HttpResponse(status=403) from .forms import NormalCaseForm + from loguru import logger + form = NormalCaseForm(request.POST) + logger.debug("create_case_normal POST data: {}", dict(request.POST)) if form.is_valid(): + logger.debug("NormalCaseForm.cleaned_data: {}", form.cleaned_data) nc = form.save(commit=False) nc.case = case nc.added_by = request.user