Refactor NormalCaseForm to prevent nested forms and enhance logging in case_normal_form and create_case_normal views
This commit is contained in:
+6
-1
@@ -246,8 +246,13 @@ class NormalCaseForm(ModelForm):
|
|||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
self.helper = FormHelper()
|
self.helper = FormHelper()
|
||||||
|
# Do not render a <form> 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
|
||||||
|
# <form> 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_method = "post"
|
||||||
self.helper.form_tag = True
|
self.helper.form_tag = False
|
||||||
self.helper.layout = Layout(
|
self.helper.layout = Layout(
|
||||||
Div(
|
Div(
|
||||||
Field("age_years", wrapper_class="col-md-4"),
|
Field("age_years", wrapper_class="col-md-4"),
|
||||||
|
|||||||
@@ -631,7 +631,16 @@ def case_normal_form(request, pk):
|
|||||||
"modality": inferred_modality,
|
"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)
|
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)
|
return HttpResponse(html)
|
||||||
|
|
||||||
|
|
||||||
@@ -648,8 +657,12 @@ def create_case_normal(request, pk):
|
|||||||
return HttpResponse(status=403)
|
return HttpResponse(status=403)
|
||||||
|
|
||||||
from .forms import NormalCaseForm
|
from .forms import NormalCaseForm
|
||||||
|
from loguru import logger
|
||||||
|
|
||||||
form = NormalCaseForm(request.POST)
|
form = NormalCaseForm(request.POST)
|
||||||
|
logger.debug("create_case_normal POST data: {}", dict(request.POST))
|
||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
|
logger.debug("NormalCaseForm.cleaned_data: {}", form.cleaned_data)
|
||||||
nc = form.save(commit=False)
|
nc = form.save(commit=False)
|
||||||
nc.case = case
|
nc.case = case
|
||||||
nc.added_by = request.user
|
nc.added_by = request.user
|
||||||
|
|||||||
Reference in New Issue
Block a user