diff --git a/src/registrar/admin.py b/src/registrar/admin.py index 7a202c26b..e794e062c 100644 --- a/src/registrar/admin.py +++ b/src/registrar/admin.py @@ -167,6 +167,9 @@ class DomainRequestAdminForm(forms.ModelForm): "alternative_domains": NoAutocompleteFilteredSelectMultiple("alternative_domains", False), "other_contacts": NoAutocompleteFilteredSelectMultiple("other_contacts", False), } + labels = { + "action_needed_reason_email": "Auto-generated email", + } def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) @@ -1520,6 +1523,7 @@ class DomainRequestAdmin(ListHeaderAdmin, ImportExportModelAdmin): "status", "rejection_reason", "action_needed_reason", + "action_needed_reason_email", "investigator", "creator", "submitter", @@ -1599,7 +1603,8 @@ class DomainRequestAdmin(ListHeaderAdmin, ImportExportModelAdmin): "alternative_domains", "is_election_board", "federal_agency", - "status_history" + "status_history", + "action_needed_reason_email", ) # Read only that we'll leverage for CISA Analysts diff --git a/src/registrar/assets/js/get-gov-admin.js b/src/registrar/assets/js/get-gov-admin.js index bbda07834..898c41c4b 100644 --- a/src/registrar/assets/js/get-gov-admin.js +++ b/src/registrar/assets/js/get-gov-admin.js @@ -362,8 +362,9 @@ function initializeWidgetOnList(list, parentId) { (function (){ let rejectionReasonFormGroup = document.querySelector('.field-rejection_reason') let actionNeededReasonFormGroup = document.querySelector('.field-action_needed_reason'); + let actionNeededReasonEmailFormGroup = document.querySelector('.field-action_needed_reason_email') - if (rejectionReasonFormGroup && actionNeededReasonFormGroup) { + if (rejectionReasonFormGroup && actionNeededReasonFormGroup && actionNeededReasonEmailFormGroup) { let statusSelect = document.getElementById('id_status') let isRejected = statusSelect.value == "rejected" let isActionNeeded = statusSelect.value == "action needed" @@ -371,6 +372,7 @@ function initializeWidgetOnList(list, parentId) { // Initial handling of rejectionReasonFormGroup display showOrHideObject(rejectionReasonFormGroup, show=isRejected) showOrHideObject(actionNeededReasonFormGroup, show=isActionNeeded) + showOrHideObject(actionNeededReasonEmailFormGroup, show=isActionNeeded) // Listen to change events and handle rejectionReasonFormGroup display, then save status to session storage statusSelect.addEventListener('change', function() { @@ -382,6 +384,7 @@ function initializeWidgetOnList(list, parentId) { isActionNeeded = statusSelect.value == "action needed" showOrHideObject(actionNeededReasonFormGroup, show=isActionNeeded) + showOrHideObject(actionNeededReasonEmailFormGroup, show=isActionNeeded) addOrRemoveSessionBoolean("showActionNeededReason", add=isActionNeeded) }); @@ -398,6 +401,7 @@ function initializeWidgetOnList(list, parentId) { let showActionNeededReason = sessionStorage.getItem("showActionNeededReason") !== null showOrHideObject(actionNeededReasonFormGroup, show=showActionNeededReason) + showOrHideObject(actionNeededReasonEmailFormGroup, show=isActionNeeded) } }); }); diff --git a/src/registrar/assets/sass/_theme/_admin.scss b/src/registrar/assets/sass/_theme/_admin.scss index 37ccef488..c3705eadb 100644 --- a/src/registrar/assets/sass/_theme/_admin.scss +++ b/src/registrar/assets/sass/_theme/_admin.scss @@ -836,4 +836,8 @@ div.dja__model-description{ .margin-top-0 { margin-top: 0 !important; +} + +.padding-top-0 { + padding-top: 0 !important; } \ No newline at end of file diff --git a/src/registrar/templates/django/admin/includes/detail_table_fieldset.html b/src/registrar/templates/django/admin/includes/detail_table_fieldset.html index d576a0aad..efecbf0a3 100644 --- a/src/registrar/templates/django/admin/includes/detail_table_fieldset.html +++ b/src/registrar/templates/django/admin/includes/detail_table_fieldset.html @@ -61,6 +61,24 @@ This is using a custom implementation fieldset.html (see admin/fieldset.html) No changelog to display. {% endif %} + {% elif field.field.name == "action_needed_reason_email" %} +
+ + +
{% elif field.field.name == "other_contacts" %} {% if all_contacts.count > 2 %}
@@ -121,39 +139,19 @@ This is using a custom implementation fieldset.html (see admin/fieldset.html) {% endblock field_readonly %} {% block after_help_text %} - {% if field.field.name == "action_needed_reason" %} -
- -
- {% comment %} - Store the action needed reason emails in a json-based dictionary. - This allows us to change the action_needed_reason_email field dynamically, depending on value. - The alternative to this is an API endpoint. + {% if field.field.name == "action_needed_reason_email" %} + {% comment %} + Store the action needed reason emails in a json-based dictionary. + This allows us to change the action_needed_reason_email field dynamically, depending on value. + The alternative to this is an API endpoint. - Given that we have a limited number of emails, doing it this way makes sense. - {% endcomment %} - {% if action_needed_reason_emails %} - - {% endif %} - - -
-
+ Given that we have a limited number of emails, doing it this way makes sense. + {% endcomment %} + {% if action_needed_reason_emails %} + + {% endif %} {% elif field.field.name == "creator" %}