mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-07-24 19:48:36 +02:00
some error validation, light refactor of ip checking in model
This commit is contained in:
parent
16164f1f05
commit
51307d3b12
4 changed files with 45 additions and 13 deletions
|
@ -26,7 +26,14 @@ class DomainNameserverForm(forms.Form):
|
|||
|
||||
server = forms.CharField(label="Name server", strip=True)
|
||||
|
||||
ip = forms.CharField(label="IP address", strip=True, required=False)
|
||||
ip = forms.CharField(
|
||||
label="IP address",
|
||||
strip=True,
|
||||
required=False,
|
||||
validators=[
|
||||
# TODO in progress
|
||||
],
|
||||
)
|
||||
|
||||
|
||||
NameserverFormset = formset_factory(
|
||||
|
|
|
@ -313,14 +313,14 @@ class Domain(TimeStampedModel, DomainHelper):
|
|||
NameserverError (if exception hit)
|
||||
Returns:
|
||||
None"""
|
||||
if self.isSubdomain(nameserver) and (ip is None or ip == []):
|
||||
if self.isSubdomain(nameserver) and (ip is None or ip == [] or ip != []):
|
||||
raise NameserverError(code=nsErrorCodes.MISSING_IP, nameserver=nameserver)
|
||||
|
||||
elif not self.isSubdomain(nameserver) and (ip is not None and ip != []):
|
||||
elif not self.isSubdomain(nameserver) and (ip is not None and ip != [] and ip != ['']):
|
||||
raise NameserverError(
|
||||
code=nsErrorCodes.GLUE_RECORD_NOT_ALLOWED, nameserver=nameserver, ip=ip
|
||||
)
|
||||
elif ip is not None and ip != []:
|
||||
elif ip is not None and ip != [] and ip != ['']:
|
||||
for addr in ip:
|
||||
logger.info(f"ip address {addr}")
|
||||
if not self._valid_ip_addr(addr):
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
|
||||
{% include "includes/required_fields.html" %}
|
||||
|
||||
<form class="usa-form usa-form--large" method="post" novalidate id="form-container">
|
||||
<form class="usa-form usa-form--extra-large" method="post" novalidate id="form-container">
|
||||
{% csrf_token %}
|
||||
{{ formset.management_form }}
|
||||
|
||||
|
@ -26,7 +26,7 @@
|
|||
<div class="tablet:grid-col-6">
|
||||
{% with sublabel_text="Example: ns"|concat:forloop.counter|concat:".example.com" %}
|
||||
{% if forloop.counter <= 2 %}
|
||||
{% with attr_required=True %}
|
||||
{% with attr_required=True add_group_class="usa-form-group--unstyled-error" %}
|
||||
{% input_with_errors form.server %}
|
||||
{% endwith %}
|
||||
{% else %}
|
||||
|
@ -35,7 +35,7 @@
|
|||
{% endwith %}
|
||||
</div>
|
||||
<div class="tablet:grid-col-6">
|
||||
{% with sublabel_text="Example: ns"|concat:forloop.counter|concat:".example.com" %}
|
||||
{% with sublabel_text="Example: ns"|concat:forloop.counter|concat:".example.com" add_group_class="usa-form-group--unstyled-error" %}
|
||||
{% input_with_errors form.ip %}
|
||||
{% endwith %}
|
||||
</div>
|
||||
|
|
|
@ -23,6 +23,7 @@ from registrar.models import (
|
|||
UserDomainRole,
|
||||
)
|
||||
from registrar.models.public_contact import PublicContact
|
||||
from registrar.utility.errors import NameserverError
|
||||
|
||||
from ..forms import (
|
||||
ContactForm,
|
||||
|
@ -222,17 +223,41 @@ class DomainNameserversView(DomainPermissionView, FormMixin):
|
|||
nameservers = []
|
||||
for form in formset:
|
||||
try:
|
||||
ip_string = form.cleaned_data["ip"]
|
||||
# Split the string into a list using a comma as the delimiter
|
||||
ip_list = ip_string.split(',')
|
||||
# Remove any leading or trailing whitespace from each IP in the list
|
||||
# this will return [''] if no ips have been entered, which is taken
|
||||
# into account in the model in checkHostIPCombo
|
||||
ip_list = [ip.strip() for ip in ip_list]
|
||||
|
||||
as_tuple = (
|
||||
form.cleaned_data["server"],
|
||||
[form.cleaned_data["ip"]]
|
||||
ip_list,
|
||||
)
|
||||
nameservers.append(as_tuple)
|
||||
except KeyError:
|
||||
# no server information in this field, skip it
|
||||
pass
|
||||
domain = self.get_object()
|
||||
domain.nameservers = nameservers
|
||||
|
||||
try:
|
||||
domain.nameservers = nameservers
|
||||
except NameserverError as Err:
|
||||
# TODO: move into literal
|
||||
messages.error(self.request, 'Whoops, Nameservers Error')
|
||||
# messages.error(self.request, GENERIC_ERROR)
|
||||
logger.error(f"Nameservers error: {Err}")
|
||||
# TODO: registry is not throwing an error when no connection
|
||||
# TODO: merge 1103 and use literals
|
||||
except RegistryError as Err:
|
||||
if Err.is_connection_error():
|
||||
messages.error(self.request, 'CANNOT_CONTACT_REGISTRY')
|
||||
logger.error(f"Registry connection error: {Err}")
|
||||
else:
|
||||
messages.error(self.request, 'GENERIC_ERROR')
|
||||
logger.error(f"Registry error: {Err}")
|
||||
else:
|
||||
messages.success(
|
||||
self.request, "The name servers for this domain have been updated."
|
||||
)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue