mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-05-20 11:29:25 +02:00
Add tables for domains / requests and readonly senior official logic
This commit is contained in:
parent
02bf9c4781
commit
1a9002c1b4
6 changed files with 92 additions and 6 deletions
|
@ -2938,7 +2938,7 @@ class PortfolioAdmin(ListHeaderAdmin):
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
("Portfolio members", {"fields": ["display_admins", "display_members"]}),
|
("Portfolio members", {"fields": ["display_admins", "display_members"]}),
|
||||||
("Portfolio domains", {"fields": ["domains", "domain_requests"]}),
|
("Domains and requests", {"fields": ["domains", "domain_requests"]}),
|
||||||
("Suborganizations", {"fields": ["suborganizations"]}),
|
("Suborganizations", {"fields": ["suborganizations"]}),
|
||||||
("Senior official", {"fields": ["senior_official"]}),
|
("Senior official", {"fields": ["senior_official"]}),
|
||||||
]
|
]
|
||||||
|
@ -3192,8 +3192,12 @@ class PortfolioAdmin(ListHeaderAdmin):
|
||||||
obj = self.get_object(request, object_id)
|
obj = self.get_object(request, object_id)
|
||||||
extra_context = extra_context or {}
|
extra_context = extra_context or {}
|
||||||
extra_context["skip_additional_contact_info"] = True
|
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["members"] = self.get_user_portfolio_permission_non_admins(obj)
|
||||||
extra_context["admins"] = self.get_user_portfolio_permission_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)
|
return super().change_view(request, object_id, form_url, extra_context)
|
||||||
|
|
||||||
def save_model(self, request, obj, form, change):
|
def save_model(self, request, obj, form, change):
|
||||||
|
|
|
@ -959,6 +959,7 @@ function initializeWidgetOnList(list, parentId) {
|
||||||
hideElement(contactList.parentElement);
|
hideElement(contactList.parentElement);
|
||||||
|
|
||||||
let $seniorOfficial = django.jQuery("#id_senior_official");
|
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;
|
let seniorOfficialApi = document.getElementById("senior_official_from_agency_json_url").value;
|
||||||
fetch(`${seniorOfficialApi}?agency_name=${selectedText}`)
|
fetch(`${seniorOfficialApi}?agency_name=${selectedText}`)
|
||||||
.then(response => {
|
.then(response => {
|
||||||
|
@ -969,7 +970,12 @@ function initializeWidgetOnList(list, parentId) {
|
||||||
if (data.error) {
|
if (data.error) {
|
||||||
// Clear the field if the SO doesn't exist.
|
// Clear the field if the SO doesn't exist.
|
||||||
if (statusCode === 404) {
|
if (statusCode === 404) {
|
||||||
|
if ($seniorOfficial && $seniorOfficial.length > 0) {
|
||||||
$seniorOfficial.val("").trigger("change");
|
$seniorOfficial.val("").trigger("change");
|
||||||
|
}else {
|
||||||
|
// Show the "create one now" text if this field is none in readonly mode.
|
||||||
|
readonlySeniorOfficial.innerHTML = '<a href="admin/registrar/seniorofficial/add/">No senior official has been found. Create one now.</a>'
|
||||||
|
}
|
||||||
console.warn("Record not found: " + data.error);
|
console.warn("Record not found: " + data.error);
|
||||||
}else {
|
}else {
|
||||||
console.error("Error in AJAX call: " + data.error);
|
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
|
// Get the associated senior official with this federal agency
|
||||||
let seniorOfficialId = data.id;
|
let seniorOfficialId = data.id;
|
||||||
let seniorOfficialName = [data.first_name, data.last_name].join(" ");
|
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
|
// If the senior official is a dropdown field, edit that
|
||||||
updateSeniorOfficialDropdown($seniorOfficial, seniorOfficialId, seniorOfficialName);
|
updateSeniorOfficialDropdown($seniorOfficial, seniorOfficialId, seniorOfficialName);
|
||||||
}else {
|
}else {
|
||||||
let readonlySeniorOfficial = document.querySelector(".field-senior_official .readonly");
|
|
||||||
if (readonlySeniorOfficial) {
|
if (readonlySeniorOfficial) {
|
||||||
let seniorOfficialLink = `<a href=/admin/registrar/seniorofficial/${seniorOfficialId}/change/>${seniorOfficialName}</a>`
|
let seniorOfficialLink = `<a href=/admin/registrar/seniorofficial/${seniorOfficialId}/change/>${seniorOfficialName}</a>`
|
||||||
readonlySeniorOfficial.innerHTML = seniorOfficialName ? seniorOfficialLink : "-";
|
readonlySeniorOfficial.innerHTML = seniorOfficialName ? seniorOfficialLink : "-";
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
None<br>
|
None<br>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% else %}
|
{% elif not hide_no_contact_info_message %}
|
||||||
No additional contact information found.<br>
|
No additional contact information found.<br>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
{% load static url_helpers %}
|
||||||
|
|
||||||
|
<details class="margin-top-1 dja-detail-table" aria-role="button" closed>
|
||||||
|
<summary class="padding-1 padding-left-0 dja-details-summary">Details</summary>
|
||||||
|
<div class="grid-container margin-left-0 padding-left-0 padding-right-0 dja-details-contents">
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Name</th>
|
||||||
|
<th>Status</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{% for domain_request in domain_requests %}
|
||||||
|
{% url 'admin:registrar_domainrequest_change' domain_request.pk as url %}
|
||||||
|
<tr>
|
||||||
|
<td><a href={{url}}>{{ domain_request }}</a></td>
|
||||||
|
{% if domain_request.get_status_display %}
|
||||||
|
<td>{{ domain_request.get_status_display }}</td>
|
||||||
|
{% else %}
|
||||||
|
<td>None</td>
|
||||||
|
{% endif %}
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</details>
|
|
@ -0,0 +1,32 @@
|
||||||
|
{% load static url_helpers %}
|
||||||
|
|
||||||
|
<details class="margin-top-1 dja-detail-table" aria-role="button" closed>
|
||||||
|
<summary class="padding-1 padding-left-0 dja-details-summary">Details</summary>
|
||||||
|
<div class="grid-container margin-left-0 padding-left-0 padding-right-0 dja-details-contents">
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Name</th>
|
||||||
|
<th>State</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{% for domain_info in domains %}
|
||||||
|
{% if domain_info.domain %}
|
||||||
|
{% with domain=domain_info.domain %}
|
||||||
|
{% url 'admin:registrar_domain_change' domain.pk as url %}
|
||||||
|
<tr>
|
||||||
|
<td><a href={{url}}>{{ domain }}</a></td>
|
||||||
|
{% if domain and domain.get_state_display %}
|
||||||
|
<td>{{ domain.get_state_display }}</td>
|
||||||
|
{% else %}
|
||||||
|
<td>None</td>
|
||||||
|
{% endif %}
|
||||||
|
</tr>
|
||||||
|
{% endwith %}
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</details>
|
|
@ -21,6 +21,15 @@
|
||||||
<p>No additional permissions found.</p>
|
<p>No additional permissions found.</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
{% elif field.field.name == "senior_official" %}
|
||||||
|
{% if original_object.senior_official %}
|
||||||
|
<div class="readonly">{{ field.contents }}</div>
|
||||||
|
{% else %}
|
||||||
|
{% url "admin:registrar_seniorofficial_add" as url %}
|
||||||
|
<div class="readonly">
|
||||||
|
<a href={{ url }}>No senior official has been found. Create one now.</a>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
{% else %}
|
{% else %}
|
||||||
<div class="readonly">{{ field.contents }}</div>
|
<div class="readonly">{{ field.contents }}</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -30,7 +39,7 @@
|
||||||
{% if field.field.name == "senior_official" %}
|
{% if field.field.name == "senior_official" %}
|
||||||
<div class="flex-container">
|
<div class="flex-container">
|
||||||
<label aria-label="Senior official contact details"></label>
|
<label aria-label="Senior official contact details"></label>
|
||||||
{% include "django/admin/includes/contact_detail_list.html" with user=original_object.senior_official no_title_top_padding=field.is_readonly %}
|
{% include "django/admin/includes/contact_detail_list.html" with user=original_object.senior_official no_title_top_padding=field.is_readonly hide_no_contact_info_message=True %}
|
||||||
</div>
|
</div>
|
||||||
{% elif field.field.name == "display_admins" %}
|
{% elif field.field.name == "display_admins" %}
|
||||||
{% if admins|length > 0 %}
|
{% if admins|length > 0 %}
|
||||||
|
@ -40,5 +49,13 @@
|
||||||
{% if members|length > 0 %}
|
{% if members|length > 0 %}
|
||||||
{% include "django/admin/includes/portfolio_members_table.html" with members=members %}
|
{% include "django/admin/includes/portfolio_members_table.html" with members=members %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% elif field.field.name == "domains" %}
|
||||||
|
{% if domains|length > 0 %}
|
||||||
|
{% include "django/admin/includes/portfolio_domains_table.html" with domains=domains %}
|
||||||
|
{% endif %}
|
||||||
|
{% elif field.field.name == "domain_requests" %}
|
||||||
|
{% if domain_requests|length > 0 %}
|
||||||
|
{% include "django/admin/includes/portfolio_domain_requests_table.html" with domain_requests=domain_requests %}
|
||||||
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endblock after_help_text %}
|
{% endblock after_help_text %}
|
Loading…
Add table
Add a link
Reference in a new issue