diff --git a/src/registrar/admin.py b/src/registrar/admin.py
index a83aedf8e..2c1bd5a5a 100644
--- a/src/registrar/admin.py
+++ b/src/registrar/admin.py
@@ -2938,7 +2938,7 @@ class PortfolioAdmin(ListHeaderAdmin):
},
),
("Portfolio members", {"fields": ["display_admins", "display_members"]}),
- ("Portfolio domains", {"fields": ["domains", "domain_requests"]}),
+ ("Domains and requests", {"fields": ["domains", "domain_requests"]}),
("Suborganizations", {"fields": ["suborganizations"]}),
("Senior official", {"fields": ["senior_official"]}),
]
@@ -3192,8 +3192,12 @@ class PortfolioAdmin(ListHeaderAdmin):
obj = self.get_object(request, object_id)
extra_context = extra_context or {}
extra_context["skip_additional_contact_info"] = True
+
+ # We repeat these calls twice.
extra_context["members"] = self.get_user_portfolio_permission_non_admins(obj)
extra_context["admins"] = self.get_user_portfolio_permission_admins(obj)
+ extra_context["domains"] = obj.get_domains()
+ extra_context["domain_requests"] = obj.get_domain_requests()
return super().change_view(request, object_id, form_url, extra_context)
def save_model(self, request, obj, form, change):
diff --git a/src/registrar/assets/js/get-gov-admin.js b/src/registrar/assets/js/get-gov-admin.js
index eb62f4b64..fd2d6330e 100644
--- a/src/registrar/assets/js/get-gov-admin.js
+++ b/src/registrar/assets/js/get-gov-admin.js
@@ -959,6 +959,7 @@ function initializeWidgetOnList(list, parentId) {
hideElement(contactList.parentElement);
let $seniorOfficial = django.jQuery("#id_senior_official");
+ let readonlySeniorOfficial = document.querySelector(".field-senior_official .readonly");
let seniorOfficialApi = document.getElementById("senior_official_from_agency_json_url").value;
fetch(`${seniorOfficialApi}?agency_name=${selectedText}`)
.then(response => {
@@ -969,7 +970,12 @@ function initializeWidgetOnList(list, parentId) {
if (data.error) {
// Clear the field if the SO doesn't exist.
if (statusCode === 404) {
- $seniorOfficial.val("").trigger("change");
+ if ($seniorOfficial && $seniorOfficial.length > 0) {
+ $seniorOfficial.val("").trigger("change");
+ }else {
+ // Show the "create one now" text if this field is none in readonly mode.
+ readonlySeniorOfficial.innerHTML = 'No senior official has been found. Create one now.'
+ }
console.warn("Record not found: " + data.error);
}else {
console.error("Error in AJAX call: " + data.error);
@@ -984,11 +990,10 @@ function initializeWidgetOnList(list, parentId) {
// Get the associated senior official with this federal agency
let seniorOfficialId = data.id;
let seniorOfficialName = [data.first_name, data.last_name].join(" ");
- if (!$seniorOfficial) {
+ if ($seniorOfficial && $seniorOfficial.length > 0) {
// If the senior official is a dropdown field, edit that
updateSeniorOfficialDropdown($seniorOfficial, seniorOfficialId, seniorOfficialName);
}else {
- let readonlySeniorOfficial = document.querySelector(".field-senior_official .readonly");
if (readonlySeniorOfficial) {
let seniorOfficialLink = `${seniorOfficialName}`
readonlySeniorOfficial.innerHTML = seniorOfficialName ? seniorOfficialLink : "-";
diff --git a/src/registrar/templates/django/admin/includes/contact_detail_list.html b/src/registrar/templates/django/admin/includes/contact_detail_list.html
index 7cc72e8e1..0a28a6532 100644
--- a/src/registrar/templates/django/admin/includes/contact_detail_list.html
+++ b/src/registrar/templates/django/admin/includes/contact_detail_list.html
@@ -39,7 +39,7 @@
None
{% endif %}
- {% else %}
+ {% elif not hide_no_contact_info_message %}
No additional contact information found.
{% endif %}
diff --git a/src/registrar/templates/django/admin/includes/portfolio_domain_requests_table.html b/src/registrar/templates/django/admin/includes/portfolio_domain_requests_table.html
new file mode 100644
index 000000000..2887c2179
--- /dev/null
+++ b/src/registrar/templates/django/admin/includes/portfolio_domain_requests_table.html
@@ -0,0 +1,28 @@
+{% load static url_helpers %}
+
+Details
+
+
+
+
+
+
+
+ {% for domain_request in domain_requests %}
+ {% url 'admin:registrar_domainrequest_change' domain_request.pk as url %}
+ Name
+ Status
+
+
+ {% endfor %}
+
+ {{ domain_request }}
+ {% if domain_request.get_status_display %}
+ {{ domain_request.get_status_display }}
+ {% else %}
+ None
+ {% endif %}
+ Details
+
+
+
+
+
+
+
+ {% for domain_info in domains %}
+ {% if domain_info.domain %}
+ {% with domain=domain_info.domain %}
+ {% url 'admin:registrar_domain_change' domain.pk as url %}
+ Name
+ State
+
+
+ {% endwith %}
+ {% endif %}
+ {% endfor %}
+
+ {{ domain }}
+ {% if domain and domain.get_state_display %}
+ {{ domain.get_state_display }}
+ {% else %}
+ None
+ {% endif %}
+
No additional permissions found.
{% endif %} + {% elif field.field.name == "senior_official" %} + {% if original_object.senior_official %} +