mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-05-20 03:19:24 +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 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):
|
||||
|
|
|
@ -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) {
|
||||
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 = '<a href="admin/registrar/seniorofficial/add/">No senior official has been found. Create one now.</a>'
|
||||
}
|
||||
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 = `<a href=/admin/registrar/seniorofficial/${seniorOfficialId}/change/>${seniorOfficialName}</a>`
|
||||
readonlySeniorOfficial.innerHTML = seniorOfficialName ? seniorOfficialLink : "-";
|
||||
|
|
|
@ -39,7 +39,7 @@
|
|||
None<br>
|
||||
{% endif %}
|
||||
|
||||
{% else %}
|
||||
{% elif not hide_no_contact_info_message %}
|
||||
No additional contact information found.<br>
|
||||
{% 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>
|
||||
{% endif %}
|
||||
</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 %}
|
||||
<div class="readonly">{{ field.contents }}</div>
|
||||
{% endif %}
|
||||
|
@ -30,7 +39,7 @@
|
|||
{% if field.field.name == "senior_official" %}
|
||||
<div class="flex-container">
|
||||
<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>
|
||||
{% elif field.field.name == "display_admins" %}
|
||||
{% if admins|length > 0 %}
|
||||
|
@ -40,5 +49,13 @@
|
|||
{% if members|length > 0 %}
|
||||
{% include "django/admin/includes/portfolio_members_table.html" with members=members %}
|
||||
{% 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 %}
|
||||
{% endblock after_help_text %}
|
Loading…
Add table
Add a link
Reference in a new issue