mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-08-18 15:34:16 +02:00
further fixes to formset validation, and display updates
This commit is contained in:
parent
d8c98c08da
commit
dabac5935f
3 changed files with 13 additions and 12 deletions
|
@ -35,6 +35,8 @@ export class NameserverForm {
|
||||||
const domainName = document.getElementById('id_form-0-domain');
|
const domainName = document.getElementById('id_form-0-domain');
|
||||||
if (domainName) {
|
if (domainName) {
|
||||||
this.domain = domainName.value;
|
this.domain = domainName.value;
|
||||||
|
} else {
|
||||||
|
console.warn("Form expects a dom element, id_form-0-domain");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if exactly two nameserver forms exist: id_form-1-server is present but id_form-2-server is not
|
// Check if exactly two nameserver forms exist: id_form-1-server is present but id_form-2-server is not
|
||||||
|
@ -56,7 +58,7 @@ export class NameserverForm {
|
||||||
|
|
||||||
// handle display of table view errors
|
// handle display of table view errors
|
||||||
// if error exists in an edit-row, make that row show, and readonly row hide
|
// if error exists in an edit-row, make that row show, and readonly row hide
|
||||||
const formTable = document.querySelector('.usa-table')
|
const formTable = document.getElementById('nameserver-table')
|
||||||
if (formTable) {
|
if (formTable) {
|
||||||
const editRows = formTable.querySelectorAll('.edit-row');
|
const editRows = formTable.querySelectorAll('.edit-row');
|
||||||
editRows.forEach(editRow => {
|
editRows.forEach(editRow => {
|
||||||
|
|
|
@ -184,8 +184,8 @@ class BaseNameserverFormset(forms.BaseFormSet):
|
||||||
"""Check for duplicate entries in the formset and ensure at least two valid nameservers."""
|
"""Check for duplicate entries in the formset and ensure at least two valid nameservers."""
|
||||||
error_message = "At least two name servers are required."
|
error_message = "At least two name servers are required."
|
||||||
|
|
||||||
valid_forms, empty_forms = self._categorize_forms(error_message)
|
valid_forms, invalid_forms, empty_forms = self._categorize_forms(error_message)
|
||||||
self._enforce_minimum_nameservers(valid_forms, empty_forms, error_message)
|
self._enforce_minimum_nameservers(valid_forms, invalid_forms, empty_forms, error_message)
|
||||||
|
|
||||||
if any(self.errors): # Skip further validation if individual forms already have errors
|
if any(self.errors): # Skip further validation if individual forms already have errors
|
||||||
return
|
return
|
||||||
|
@ -193,31 +193,30 @@ class BaseNameserverFormset(forms.BaseFormSet):
|
||||||
self._check_for_duplicates()
|
self._check_for_duplicates()
|
||||||
|
|
||||||
def _categorize_forms(self, error_message):
|
def _categorize_forms(self, error_message):
|
||||||
"""Sort forms into valid or empty based on the 'server' field."""
|
"""Sort forms into valid, invalid or empty based on the 'server' field."""
|
||||||
valid_forms = []
|
valid_forms = []
|
||||||
|
invalid_forms = []
|
||||||
empty_forms = []
|
empty_forms = []
|
||||||
|
|
||||||
for form in self.forms:
|
for form in self.forms:
|
||||||
if not self._is_server_validation_needed(form, error_message):
|
if not self._is_server_validation_needed(form, error_message):
|
||||||
|
invalid_forms.append(form)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
server = form.cleaned_data.get("server", "").strip()
|
server = form.cleaned_data.get("server", "").strip()
|
||||||
if server:
|
if server:
|
||||||
valid_forms.append(form)
|
valid_forms.append(form)
|
||||||
else:
|
else:
|
||||||
empty_forms.append(form)
|
empty_forms.append(form)
|
||||||
|
|
||||||
return valid_forms, empty_forms
|
return valid_forms, invalid_forms, empty_forms
|
||||||
|
|
||||||
def _is_server_validation_needed(self, form, error_message):
|
def _is_server_validation_needed(self, form, error_message):
|
||||||
"""Determine if server validation should be performed on a given form."""
|
"""Determine if server validation should be performed on a given form."""
|
||||||
return form.is_valid() or list(form.errors.get("server", [])) == [error_message]
|
return form.is_valid() or list(form.errors.get("server", [])) == [error_message]
|
||||||
|
|
||||||
def _enforce_minimum_nameservers(self, valid_forms, empty_forms, error_message):
|
def _enforce_minimum_nameservers(self, valid_forms, invalid_forms, empty_forms, error_message):
|
||||||
"""Ensure at least two nameservers are provided, adjusting error messages as needed. This accounts
|
"""Ensure at least two nameservers are provided, adjusting error messages as needed."""
|
||||||
for three forms, where the last form is empty and one of the first two forms has an error. In that case
|
if len(valid_forms) + len(invalid_forms) < 2:
|
||||||
will want to remove the 'at least two valid servers' error."""
|
|
||||||
if len(valid_forms) < 2 and len(self.forms) < 3:
|
|
||||||
self._add_required_error(empty_forms, error_message)
|
self._add_required_error(empty_forms, error_message)
|
||||||
else:
|
else:
|
||||||
self._remove_required_error_from_forms(error_message)
|
self._remove_required_error_from_forms(error_message)
|
||||||
|
|
|
@ -109,7 +109,7 @@
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
|
|
||||||
<table class="usa-table usa-table--borderless usa-table--stacked dotgov-table dotgov-table--stacked">
|
<table class="usa-table usa-table--borderless usa-table--stacked dotgov-table dotgov-table--stacked" id="nameserver-table">
|
||||||
<caption class="sr-only">Your registered domains</caption>
|
<caption class="sr-only">Your registered domains</caption>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue