From a8fa08acb2afeb0aa719badcd2163899714f1c60 Mon Sep 17 00:00:00 2001
From: David Kennedy
Date: Tue, 4 Feb 2025 06:14:15 -0500
Subject: [PATCH 1/4] combined suborg and portfolio permissions
---
src/registrar/context_processors.py | 9 ++-------
src/registrar/models/user.py | 9 +--------
.../models/user_portfolio_permission.py | 4 ----
.../models/utility/portfolio_helper.py | 4 ----
src/registrar/templates/domain_detail.html | 8 ++++----
src/registrar/templates/domain_sidebar.html | 2 +-
.../templates/domain_suborganization.html | 2 +-
.../templates/includes/domains_table.html | 2 +-
src/registrar/tests/test_models.py | 18 ++----------------
src/registrar/tests/test_reports.py | 2 +-
src/registrar/tests/test_views_domain.py | 2 +-
11 files changed, 14 insertions(+), 48 deletions(-)
diff --git a/src/registrar/context_processors.py b/src/registrar/context_processors.py
index b3d9c3727..b22729563 100644
--- a/src/registrar/context_processors.py
+++ b/src/registrar/context_processors.py
@@ -57,11 +57,10 @@ def portfolio_permissions(request):
"""Make portfolio permissions for the request user available in global context"""
portfolio_context = {
"has_base_portfolio_permission": False,
+ "has_edit_org_portfolio_permission": False,
"has_any_domains_portfolio_permission": False,
"has_any_requests_portfolio_permission": False,
"has_edit_request_portfolio_permission": False,
- "has_view_suborganization_portfolio_permission": False,
- "has_edit_suborganization_portfolio_permission": False,
"has_view_members_portfolio_permission": False,
"has_edit_members_portfolio_permission": False,
"portfolio": None,
@@ -82,15 +81,11 @@ def portfolio_permissions(request):
}
)
- # Linting: line too long
- view_suborg = request.user.has_view_suborganization_portfolio_permission(portfolio)
- edit_suborg = request.user.has_edit_suborganization_portfolio_permission(portfolio)
if portfolio:
return {
"has_base_portfolio_permission": request.user.has_base_portfolio_permission(portfolio),
+ "has_edit_org_portfolio_permission": request.user.has_edit_org_portfolio_permission(portfolio),
"has_edit_request_portfolio_permission": request.user.has_edit_request_portfolio_permission(portfolio),
- "has_view_suborganization_portfolio_permission": view_suborg,
- "has_edit_suborganization_portfolio_permission": edit_suborg,
"has_any_domains_portfolio_permission": request.user.has_any_domains_portfolio_permission(portfolio),
"has_any_requests_portfolio_permission": request.user.has_any_requests_portfolio_permission(portfolio),
"has_view_members_portfolio_permission": request.user.has_view_members_portfolio_permission(portfolio),
diff --git a/src/registrar/models/user.py b/src/registrar/models/user.py
index 1d508f88f..7e0790c5b 100644
--- a/src/registrar/models/user.py
+++ b/src/registrar/models/user.py
@@ -268,13 +268,6 @@ class User(AbstractUser):
def has_edit_request_portfolio_permission(self, portfolio):
return self._has_portfolio_permission(portfolio, UserPortfolioPermissionChoices.EDIT_REQUESTS)
- # Field specific permission checks
- def has_view_suborganization_portfolio_permission(self, portfolio):
- return self._has_portfolio_permission(portfolio, UserPortfolioPermissionChoices.VIEW_SUBORGANIZATION)
-
- def has_edit_suborganization_portfolio_permission(self, portfolio):
- return self._has_portfolio_permission(portfolio, UserPortfolioPermissionChoices.EDIT_SUBORGANIZATION)
-
def is_portfolio_admin(self, portfolio):
return "Admin" in self.portfolio_role_summary(portfolio)
@@ -293,7 +286,7 @@ class User(AbstractUser):
# Define the conditions and their corresponding roles
conditions_roles = [
- (self.has_edit_suborganization_portfolio_permission(portfolio), ["Admin"]),
+ (self.has_edit_org_portfolio_permission(portfolio), ["Admin"]),
(
self.has_view_all_domains_portfolio_permission(portfolio)
and self.has_any_requests_portfolio_permission(portfolio)
diff --git a/src/registrar/models/user_portfolio_permission.py b/src/registrar/models/user_portfolio_permission.py
index 11d9c56e3..5378dc185 100644
--- a/src/registrar/models/user_portfolio_permission.py
+++ b/src/registrar/models/user_portfolio_permission.py
@@ -27,13 +27,10 @@ class UserPortfolioPermission(TimeStampedModel):
UserPortfolioPermissionChoices.EDIT_MEMBERS,
UserPortfolioPermissionChoices.VIEW_PORTFOLIO,
UserPortfolioPermissionChoices.EDIT_PORTFOLIO,
- UserPortfolioPermissionChoices.VIEW_SUBORGANIZATION,
- UserPortfolioPermissionChoices.EDIT_SUBORGANIZATION,
],
# NOTE: Check FORBIDDEN_PORTFOLIO_ROLE_PERMISSIONS before adding roles here.
UserPortfolioRoleChoices.ORGANIZATION_MEMBER: [
UserPortfolioPermissionChoices.VIEW_PORTFOLIO,
- UserPortfolioPermissionChoices.VIEW_SUBORGANIZATION,
],
}
@@ -43,7 +40,6 @@ class UserPortfolioPermission(TimeStampedModel):
UserPortfolioRoleChoices.ORGANIZATION_MEMBER: [
UserPortfolioPermissionChoices.EDIT_PORTFOLIO,
UserPortfolioPermissionChoices.EDIT_MEMBERS,
- UserPortfolioPermissionChoices.EDIT_SUBORGANIZATION,
],
}
diff --git a/src/registrar/models/utility/portfolio_helper.py b/src/registrar/models/utility/portfolio_helper.py
index 8c42b80c7..2c7b733d5 100644
--- a/src/registrar/models/utility/portfolio_helper.py
+++ b/src/registrar/models/utility/portfolio_helper.py
@@ -41,10 +41,6 @@ class UserPortfolioPermissionChoices(models.TextChoices):
VIEW_PORTFOLIO = "view_portfolio", "View organization"
EDIT_PORTFOLIO = "edit_portfolio", "Edit organization"
- # Domain: field specific permissions
- VIEW_SUBORGANIZATION = "view_suborganization", "View suborganization"
- EDIT_SUBORGANIZATION = "edit_suborganization", "Edit suborganization"
-
@classmethod
def get_user_portfolio_permission_label(cls, user_portfolio_permission):
return cls(user_portfolio_permission).label if user_portfolio_permission else None
diff --git a/src/registrar/templates/domain_detail.html b/src/registrar/templates/domain_detail.html
index 03df2d59c..489d6fdf9 100644
--- a/src/registrar/templates/domain_detail.html
+++ b/src/registrar/templates/domain_detail.html
@@ -103,12 +103,12 @@
{% endif %}
{% if portfolio %}
- {% if has_any_domains_portfolio_permission and has_edit_suborganization_portfolio_permission %}
+ {% if has_any_domains_portfolio_permission and has_edit_org_portfolio_permission %}
{% url 'domain-suborganization' pk=domain.id as url %}
- {% include "includes/summary_item.html" with title='Suborganization' value=domain.domain_info.sub_organization edit_link=url editable=is_editable|and:has_edit_suborganization_portfolio_permission %}
- {% elif has_any_domains_portfolio_permission and has_view_suborganization_portfolio_permission %}
+ {% include "includes/summary_item.html" with title='Suborganization' value=domain.domain_info.sub_organization edit_link=url editable=is_editable|and:has_edit_org_portfolio_permission %}
+ {% elif has_any_domains_portfolio_permission and has_base_portfolio_permission %}
{% url 'domain-suborganization' pk=domain.id as url %}
- {% include "includes/summary_item.html" with title='Suborganization' value=domain.domain_info.sub_organization edit_link=url editable=is_editable|and:has_view_suborganization_portfolio_permission view_button=True %}
+ {% include "includes/summary_item.html" with title='Suborganization' value=domain.domain_info.sub_organization edit_link=url editable=is_editable|and:has_base_portfolio_permission view_button=True %}
{% endif %}
{% else %}
{% url 'domain-org-name-address' pk=domain.id as url %}
diff --git a/src/registrar/templates/domain_sidebar.html b/src/registrar/templates/domain_sidebar.html
index ca3802720..a87a611cd 100644
--- a/src/registrar/templates/domain_sidebar.html
+++ b/src/registrar/templates/domain_sidebar.html
@@ -61,7 +61,7 @@
{% if portfolio %}
{% comment %} Only show this menu option if the user has the perms to do so {% endcomment %}
- {% if has_any_domains_portfolio_permission and has_view_suborganization_portfolio_permission %}
+ {% if has_any_domains_portfolio_permission and has_base_portfolio_permission %}
{% with url_name="domain-suborganization" %}
{% include "includes/domain_sidenav_item.html" with item_text="Suborganization" %}
{% endwith %}
diff --git a/src/registrar/templates/domain_suborganization.html b/src/registrar/templates/domain_suborganization.html
index e050690c8..89ce4e79d 100644
--- a/src/registrar/templates/domain_suborganization.html
+++ b/src/registrar/templates/domain_suborganization.html
@@ -39,7 +39,7 @@
please contact help@get.gov.
- {% if has_any_domains_portfolio_permission and has_edit_suborganization_portfolio_permission %}
+ {% if has_any_domains_portfolio_permission and has_edit_org_portfolio_permission %}