mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-08-13 04:59:59 +02:00
Merge pull request #2449 from cisagov/nl/2359-portfolio-inline-domaingroups-and-suborgs
Issue #2359: Manage Domain Groups and Suborgs in Portfolio admin [litterbox]
This commit is contained in:
commit
4725b6f993
2 changed files with 51 additions and 2 deletions
|
@ -9,6 +9,8 @@ from django.db.models.functions import Concat, Coalesce
|
||||||
from django.http import HttpResponseRedirect
|
from django.http import HttpResponseRedirect
|
||||||
from django.shortcuts import redirect
|
from django.shortcuts import redirect
|
||||||
from django_fsm import get_available_FIELD_transitions, FSMField
|
from django_fsm import get_available_FIELD_transitions, FSMField
|
||||||
|
from registrar.models.domain_group import DomainGroup
|
||||||
|
from registrar.models.suborganization import Suborganization
|
||||||
from waffle.decorators import flag_is_active
|
from waffle.decorators import flag_is_active
|
||||||
from django.contrib import admin, messages
|
from django.contrib import admin, messages
|
||||||
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
|
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
|
||||||
|
@ -2765,6 +2767,8 @@ class VerifiedByStaffAdmin(ListHeaderAdmin):
|
||||||
|
|
||||||
class PortfolioAdmin(ListHeaderAdmin):
|
class PortfolioAdmin(ListHeaderAdmin):
|
||||||
|
|
||||||
|
change_form_template = "django/admin/portfolio_change_form.html"
|
||||||
|
|
||||||
list_display = ("organization_name", "federal_agency", "creator")
|
list_display = ("organization_name", "federal_agency", "creator")
|
||||||
search_fields = ["organization_name"]
|
search_fields = ["organization_name"]
|
||||||
search_help_text = "Search by organization name."
|
search_help_text = "Search by organization name."
|
||||||
|
@ -2775,13 +2779,25 @@ class PortfolioAdmin(ListHeaderAdmin):
|
||||||
"federal_agency",
|
"federal_agency",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
def change_view(self, request, object_id, form_url="", extra_context=None):
|
||||||
|
"""Add related suborganizations and domain groups"""
|
||||||
|
obj = self.get_object(request, object_id)
|
||||||
|
|
||||||
|
# ---- Domain Groups
|
||||||
|
domain_groups = DomainGroup.objects.filter(portfolio=obj)
|
||||||
|
|
||||||
|
# ---- Suborganizations
|
||||||
|
suborganizations = Suborganization.objects.filter(portfolio=obj)
|
||||||
|
|
||||||
|
extra_context = {"domain_groups": domain_groups, "suborganizations": suborganizations}
|
||||||
|
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):
|
||||||
|
|
||||||
if obj.creator is not None:
|
if obj.creator is not None:
|
||||||
# ---- update creator ----
|
# ---- update creator ----
|
||||||
# Set the creator field to the current admin user
|
# Set the creator field to the current admin user
|
||||||
obj.creator = request.user if request.user.is_authenticated else None
|
obj.creator = request.user if request.user.is_authenticated else None
|
||||||
|
|
||||||
# ---- update organization name ----
|
# ---- update organization name ----
|
||||||
# org name will be the same as federal agency, if it is federal,
|
# org name will be the same as federal agency, if it is federal,
|
||||||
# otherwise it will be the actual org name. If nothing is entered for
|
# otherwise it will be the actual org name. If nothing is entered for
|
||||||
|
@ -2790,7 +2806,6 @@ class PortfolioAdmin(ListHeaderAdmin):
|
||||||
is_federal = obj.organization_type == DomainRequest.OrganizationChoices.FEDERAL
|
is_federal = obj.organization_type == DomainRequest.OrganizationChoices.FEDERAL
|
||||||
if is_federal and obj.organization_name is None:
|
if is_federal and obj.organization_name is None:
|
||||||
obj.organization_name = obj.federal_agency.agency
|
obj.organization_name = obj.federal_agency.agency
|
||||||
|
|
||||||
super().save_model(request, obj, form, change)
|
super().save_model(request, obj, form, change)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
{% extends 'django/admin/email_clipboard_change_form.html' %}
|
||||||
|
{% load i18n static %}
|
||||||
|
|
||||||
|
{% block after_related_objects %}
|
||||||
|
<div class="module aligned padding-3">
|
||||||
|
<h2>Associated groups and suborganizations</h2>
|
||||||
|
<div class="grid-row grid-gap mobile:padding-x-1 desktop:padding-x-4">
|
||||||
|
<div class="mobile:grid-col-12 tablet:grid-col-6 desktop:grid-col-4">
|
||||||
|
<h3>Domain groups</h3>
|
||||||
|
<ul class="margin-0 padding-0">
|
||||||
|
{% for domain_group in domain_groups %}
|
||||||
|
<li>
|
||||||
|
<a href="{% url 'admin:registrar_domaingroup_change' domain_group.pk %}">
|
||||||
|
{{ domain_group.name }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="mobile:grid-col-12 tablet:grid-col-6 desktop:grid-col-4">
|
||||||
|
<h3>Suborganizations</h3>
|
||||||
|
<ul class="margin-0 padding-0">
|
||||||
|
{% for suborg in suborganizations %}
|
||||||
|
<li>
|
||||||
|
<a href="{% url 'admin:registrar_suborganization_change' suborg.pk %}">
|
||||||
|
{{ suborg.name }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
Loading…
Add table
Add a link
Reference in a new issue