diff --git a/src/registrar/assets/src/js/getgov/formset-forms.js b/src/registrar/assets/src/js/getgov/formset-forms.js index 27b85212e..96d250574 100644 --- a/src/registrar/assets/src/js/getgov/formset-forms.js +++ b/src/registrar/assets/src/js/getgov/formset-forms.js @@ -292,7 +292,18 @@ export function initFormsetsForms() { // For the other contacts form, we need to update the fieldset headers based on what's visible vs hidden, // since the form on the backend employs Django's DELETE widget. let totalShownForms = document.querySelectorAll(`.repeatable-form:not([style*="display: none"])`).length; - newForm.innerHTML = newForm.innerHTML.replace(formLabelRegex, `${formLabel} ${totalShownForms + 1}`); + let newFormCount = totalShownForms + 1; + // update the header + let header = newForm.querySelector('legend h3'); + header.textContent = `${formLabel} ${newFormCount}`; + header.id = `org-contact-${newFormCount}`; + // update accessibility elements on the delete buttons + let deleteDescription = newForm.querySelector('.delete-button-description'); + deleteDescription.textContent = 'Delete new contact'; + deleteDescription.id = `org-contact-${newFormCount}__name`; + let deleteButton = newForm.querySelector('button'); + deleteButton.setAttribute("aria-labelledby", header.id); + deleteButton.setAttribute("aria-describedby", deleteDescription.id); } else { // Nameservers form is cloned from index 2 which has the word optional on init, does not have the word optional // if indices 0 or 1 have been deleted diff --git a/src/registrar/fixtures/fixtures_requests.py b/src/registrar/fixtures/fixtures_requests.py index 6eee6438f..038c2db37 100644 --- a/src/registrar/fixtures/fixtures_requests.py +++ b/src/registrar/fixtures/fixtures_requests.py @@ -315,7 +315,7 @@ class DomainRequestFixture: cls._create_domain_requests(users) @classmethod - def _create_domain_requests(cls, users): # noqa: C901 + def _create_domain_requests(cls, users, total_requests=None): # noqa: C901 """Creates DomainRequests given a list of users.""" total_domain_requests_to_make = len(users) # 100000 @@ -323,27 +323,33 @@ class DomainRequestFixture: # number of entries. # (Prevents re-adding more entries to an already populated database, # which happens when restarting Docker src) - domain_requests_already_made = DomainRequest.objects.count() + total_existing_requests = DomainRequest.objects.count() domain_requests_to_create = [] - if domain_requests_already_made < total_domain_requests_to_make: - for user in users: - for request_data in cls.DOMAINREQUESTS: - # Prepare DomainRequest objects - try: - domain_request = DomainRequest( - creator=user, - organization_name=request_data["organization_name"], - ) - cls._set_non_foreign_key_fields(domain_request, request_data) - cls._set_foreign_key_fields(domain_request, request_data, user) - domain_requests_to_create.append(domain_request) - except Exception as e: - logger.warning(e) + if total_requests and total_requests <= total_existing_requests: + total_domain_requests_to_make = total_requests - total_existing_requests + if total_domain_requests_to_make >= 0: + DomainRequest.objects.filter( + id__in=list(DomainRequest.objects.values_list("pk", flat=True)[:total_domain_requests_to_make]) + ).delete() + if total_domain_requests_to_make == 0: + return - num_additional_requests_to_make = ( - total_domain_requests_to_make - domain_requests_already_made - len(domain_requests_to_create) - ) + for user in users: + for request_data in cls.DOMAINREQUESTS: + # Prepare DomainRequest objects + try: + domain_request = DomainRequest( + creator=user, + organization_name=request_data["organization_name"], + ) + cls._set_non_foreign_key_fields(domain_request, request_data) + cls._set_foreign_key_fields(domain_request, request_data, user) + domain_requests_to_create.append(domain_request) + except Exception as e: + logger.warning(e) + + num_additional_requests_to_make = total_domain_requests_to_make - len(domain_requests_to_create) if num_additional_requests_to_make > 0: for _ in range(num_additional_requests_to_make): random_user = random.choice(users) # nosec diff --git a/src/registrar/templates/domain_request_dotgov_domain.html b/src/registrar/templates/domain_request_dotgov_domain.html index 91373609d..9edba1612 100644 --- a/src/registrar/templates/domain_request_dotgov_domain.html +++ b/src/registrar/templates/domain_request_dotgov_domain.html @@ -61,7 +61,7 @@