From faae7693c4b45cbda0833a607abb25485765fb29 Mon Sep 17 00:00:00 2001
From: Rachid Mrad
Date: Tue, 3 Oct 2023 14:06:59 -0400
Subject: [PATCH] implemented new in domain model dnssec_ds_confirmed and
dnssec_key_confirmed to control intial blurb msg on the add pages, cleaned up
JS
---
src/registrar/assets/js/get-gov.js | 41 ++++++++++++++++++-
...034_domain_dnssec_ds_confirmed_and_more.py | 28 +++++++++++++
src/registrar/models/domain.py | 10 +++++
src/registrar/templates/domain_dnssec.html | 2 +-
src/registrar/templates/domain_dsdata.html | 10 +++++
src/registrar/templates/domain_keydata.html | 10 +++++
src/registrar/views/domain.py | 16 ++++++++
7 files changed, 115 insertions(+), 2 deletions(-)
create mode 100644 src/registrar/migrations/0034_domain_dnssec_ds_confirmed_and_more.py
diff --git a/src/registrar/assets/js/get-gov.js b/src/registrar/assets/js/get-gov.js
index 1ffdeb1c6..109d18b3d 100644
--- a/src/registrar/assets/js/get-gov.js
+++ b/src/registrar/assets/js/get-gov.js
@@ -292,7 +292,46 @@ function handleValidationClick(e) {
newForm.innerHTML = newForm.innerHTML.replace(formLabelRegex, `DS Data Record ${formNum+1}`)
// newForm.innerHTML = newForm.innerHTML.replace(formExampleRegex, `ns${formNum+1}`)
container.insertBefore(newForm, addButton)
- newForm.querySelector("input").value = ""
+
+ let inputs = newForm.querySelectorAll("input");
+
+ // Reset the values of each input to blank
+ inputs.forEach((input) => {
+ input.classList.remove("usa-input--error");
+ if (input.type === "text" || input.type === "number" || input.type === "password") {
+ input.value = ""; // Set the value to an empty string
+
+ } else if (input.type === "checkbox" || input.type === "radio") {
+ input.checked = false; // Uncheck checkboxes and radios
+ }
+ });
+
+ let selects = newForm.querySelectorAll("select");
+
+ selects.forEach((select) => {
+ select.classList.remove("usa-input--error");
+ select.selectedIndex = 0; // Set the value to an empty string
+ });
+
+
+ let labels = newForm.querySelectorAll("label");
+ labels.forEach((label) => {
+ label.classList.remove("usa-label--error");
+ });
+
+
+ let usaFormGroups = newForm.querySelectorAll(".usa-form-group");
+ usaFormGroups.forEach((usaFormGroup) => {
+ usaFormGroup.classList.remove("usa-form-group--error");
+ });
+
+ let usaErrorMessages = newForm.querySelectorAll(".usa-error-message");
+ usaErrorMessages.forEach((usaErrorMessage) => {
+ let parentDiv = usaErrorMessage.closest('div');
+ if (parentDiv) {
+ parentDiv.remove(); // Remove the parent div if it exists
+ }
+ });
totalForms.setAttribute('value', `${formNum+1}`)
}
diff --git a/src/registrar/migrations/0034_domain_dnssec_ds_confirmed_and_more.py b/src/registrar/migrations/0034_domain_dnssec_ds_confirmed_and_more.py
new file mode 100644
index 000000000..72513a401
--- /dev/null
+++ b/src/registrar/migrations/0034_domain_dnssec_ds_confirmed_and_more.py
@@ -0,0 +1,28 @@
+# Generated by Django 4.2.1 on 2023-10-03 17:34
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+ dependencies = [
+ ("registrar", "0033_domain_dnssec_enabled"),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name="domain",
+ name="dnssec_ds_confirmed",
+ field=models.BooleanField(
+ default=False,
+ help_text="Boolean indicating if DS record adding is confirmed",
+ ),
+ ),
+ migrations.AddField(
+ model_name="domain",
+ name="dnssec_key_confirmed",
+ field=models.BooleanField(
+ default=False,
+ help_text="Boolean indicating if Key record adding is confirmed",
+ ),
+ ),
+ ]
diff --git a/src/registrar/models/domain.py b/src/registrar/models/domain.py
index 18ac8262f..0f2436bf7 100644
--- a/src/registrar/models/domain.py
+++ b/src/registrar/models/domain.py
@@ -711,6 +711,16 @@ class Domain(TimeStampedModel, DomainHelper):
default=False,
help_text="Boolean indicating if dnssec is enabled",
)
+
+ dnssec_ds_confirmed = models.BooleanField(
+ default=False,
+ help_text="Boolean indicating if DS record adding is confirmed",
+ )
+
+ dnssec_key_confirmed = models.BooleanField(
+ default=False,
+ help_text="Boolean indicating if Key record adding is confirmed",
+ )
# ForeignKey on UserDomainRole creates a "permissions" member for
# all of the user-roles that are in place for this domain
diff --git a/src/registrar/templates/domain_dnssec.html b/src/registrar/templates/domain_dnssec.html
index 032992014..95af919d3 100644
--- a/src/registrar/templates/domain_dnssec.html
+++ b/src/registrar/templates/domain_dnssec.html
@@ -9,7 +9,7 @@
DNSSEC, or DNS Security Extensions, is additional security layer to protect your website. Enabling DNSSEC ensures that when someone visits your website, they can be certain that it's connecting to the correct server, preventing potential hijacking or tampering with your domain's records. Read more about DNSSEC and why it is important.
-
{% else %}
{% include "includes/required_fields.html" %}
diff --git a/src/registrar/templates/domain_keydata.html b/src/registrar/templates/domain_keydata.html
index 12c6f9082..3583aeff7 100644
--- a/src/registrar/templates/domain_keydata.html
+++ b/src/registrar/templates/domain_keydata.html
@@ -16,6 +16,16 @@
+ {% elif not domain.dnssec_key_confirmed %}
+ In order to enable DNSSEC and add DS records, you must first configure it with your DNS hosting service. Your configuration will determine whether you need to add DS Data or Key Data. Contact your DNS hosting provider if you are unsure which record type to add.
+
{% else %}
{% include "includes/required_fields.html" %}
diff --git a/src/registrar/views/domain.py b/src/registrar/views/domain.py
index 5d3ca47c8..79d1fdc3f 100644
--- a/src/registrar/views/domain.py
+++ b/src/registrar/views/domain.py
@@ -255,6 +255,8 @@ class DomainDNSSECView(DomainPermissionView, FormMixin):
self.domain.save()
elif 'cancel' in request.POST:
self.domain.dnssec_enabled = False
+ self.domain.dnssec_ds_confirmed = False
+ self.domain.dnssec_key_confirmed = False
self.domain.save()
elif 'disable_dnssec' in request.POST:
try:
@@ -266,6 +268,8 @@ class DomainDNSSECView(DomainPermissionView, FormMixin):
self.request, errmsg
)
self.domain.dnssec_enabled = False
+ self.domain.dnssec_ds_confirmed = False
+ self.domain.dnssec_key_confirmed = False
self.domain.save()
return self.form_valid(form)
@@ -313,6 +317,12 @@ class DomainDsdataView(DomainPermissionView, FormMixin):
self.object = self.get_object()
formset = self.get_form()
+ if 'confirm-ds' in request.POST:
+ self.object.dnssec_ds_confirmed = True
+ self.object.dnssec_key_confirmed = False
+ self.object.save()
+ return super().form_valid(formset)
+
if formset.is_valid():
return self.form_valid(formset)
else:
@@ -397,6 +407,12 @@ class DomainKeydataView(DomainPermissionView, FormMixin):
"""Formset submission posts to this view."""
self.object = self.get_object()
formset = self.get_form()
+
+ if 'confirm-key' in request.POST:
+ self.object.dnssec_key_confirmed = True
+ self.object.dnssec_ds_confirmed = False
+ self.object.save()
+ return super().form_valid(formset)
if formset.is_valid():
return self.form_valid(formset)