From fe5af5010010dc65ada5f64c06fd75949a5dcae1 Mon Sep 17 00:00:00 2001 From: David Kennedy Date: Wed, 31 Jul 2024 21:42:11 -0400 Subject: [PATCH 1/8] initial implementation --- src/registrar/config/settings.py | 1 - src/registrar/config/urls.py | 19 +++++---- src/registrar/context_processors.py | 10 +++-- src/registrar/registrar_middleware.py | 4 +- src/registrar/templates/domain_detail.html | 29 +++++++++----- src/registrar/templates/domain_sidebar.html | 2 +- .../templates/includes/header_extended.html | 11 +++--- src/registrar/templatetags/custom_filters.py | 5 +++ src/registrar/views/__init__.py | 1 + src/registrar/views/domain.py | 11 ++++++ src/registrar/views/portfolios.py | 39 ++++--------------- src/registrar/views/utility/mixins.py | 8 +++- .../views/utility/permission_views.py | 19 +++++++++ 13 files changed, 94 insertions(+), 65 deletions(-) diff --git a/src/registrar/config/settings.py b/src/registrar/config/settings.py index 3da0a104a..2f20aeb66 100644 --- a/src/registrar/config/settings.py +++ b/src/registrar/config/settings.py @@ -241,7 +241,6 @@ TEMPLATES = [ "registrar.context_processors.is_demo_site", "registrar.context_processors.is_production", "registrar.context_processors.org_user_status", - "registrar.context_processors.add_portfolio_to_context", "registrar.context_processors.add_path_to_context", "registrar.context_processors.add_has_profile_feature_flag_to_context", "registrar.context_processors.portfolio_permissions", diff --git a/src/registrar/config/urls.py b/src/registrar/config/urls.py index b91e0980c..651346b10 100644 --- a/src/registrar/config/urls.py +++ b/src/registrar/config/urls.py @@ -25,7 +25,6 @@ from registrar.views.domain_request import Step from registrar.views.domain_requests_json import get_domain_requests_json from registrar.views.domains_json import get_domains_json from registrar.views.utility import always_404 -from registrar.views.portfolios import PortfolioDomainsView, PortfolioDomainRequestsView, PortfolioOrganizationView from api.views import available, get_current_federal, get_current_full @@ -60,19 +59,19 @@ for step, view in [ urlpatterns = [ path("", views.index, name="home"), path( - "portfolio//domains/", - PortfolioDomainsView.as_view(), - name="portfolio-domains", + "domains/", + views.PortfolioDomainsView.as_view(), + name="domains", ), path( - "portfolio//domain_requests/", - PortfolioDomainRequestsView.as_view(), - name="portfolio-domain-requests", + "requests/", + views.PortfolioDomainRequestsView.as_view(), + name="domain-requests", ), path( - "portfolio//organization/", - PortfolioOrganizationView.as_view(), - name="portfolio-organization", + "organization/", + views.PortfolioOrganizationView.as_view(), + name="organization", ), path( "admin/logout/", diff --git a/src/registrar/context_processors.py b/src/registrar/context_processors.py index 06ef07050..861a4e701 100644 --- a/src/registrar/context_processors.py +++ b/src/registrar/context_processors.py @@ -50,10 +50,6 @@ def org_user_status(request): } -def add_portfolio_to_context(request): - return {"portfolio": getattr(request, "portfolio", None)} - - def add_path_to_context(request): return {"path": getattr(request, "path", None)} @@ -70,11 +66,15 @@ def portfolio_permissions(request): "has_base_portfolio_permission": False, "has_domains_portfolio_permission": False, "has_domain_requests_portfolio_permission": False, + "portfolio": None, + "has_organization_feature_flag": False, } return { "has_base_portfolio_permission": request.user.has_base_portfolio_permission(), "has_domains_portfolio_permission": request.user.has_domains_portfolio_permission(), "has_domain_requests_portfolio_permission": request.user.has_domain_requests_portfolio_permission(), + "portfolio": request.user.portfolio, + "has_organization_feature_flag": flag_is_active(request, "organization_feature"), } except AttributeError: # Handles cases where request.user might not exist @@ -82,4 +82,6 @@ def portfolio_permissions(request): "has_base_portfolio_permission": False, "has_domains_portfolio_permission": False, "has_domain_requests_portfolio_permission": False, + "portfolio": None, + "has_organization_feature_flag": False, } diff --git a/src/registrar/registrar_middleware.py b/src/registrar/registrar_middleware.py index dd9b5541a..2af331bc9 100644 --- a/src/registrar/registrar_middleware.py +++ b/src/registrar/registrar_middleware.py @@ -149,10 +149,10 @@ class CheckPortfolioMiddleware: request.portfolio = portfolio if request.user.has_domains_portfolio_permission(): - portfolio_redirect = reverse("portfolio-domains", kwargs={"portfolio_id": portfolio.id}) + portfolio_redirect = reverse("domains") else: # View organization is the lowest access - portfolio_redirect = reverse("portfolio-organization", kwargs={"portfolio_id": portfolio.id}) + portfolio_redirect = reverse("organization") return HttpResponseRedirect(portfolio_redirect) diff --git a/src/registrar/templates/domain_detail.html b/src/registrar/templates/domain_detail.html index 08137c094..414b28a22 100644 --- a/src/registrar/templates/domain_detail.html +++ b/src/registrar/templates/domain_detail.html @@ -40,39 +40,50 @@ {% include "includes/domain_dates.html" %} + {% if is_portfolio_user and not is_domain_manager %} +
+
+

+ To manage information for this domain, you must add yourself as a domain manager. +

+
+
+ {% endif %} + + {% url 'domain-dns-nameservers' pk=domain.id as url %} {% if domain.nameservers|length > 0 %} - {% include "includes/summary_item.html" with title='DNS name servers' domains='true' value=domain.nameservers list='true' edit_link=url editable=domain.is_editable %} + {% include "includes/summary_item.html" with title='DNS name servers' domains='true' value=domain.nameservers list='true' edit_link=url editable=is_editable %} {% else %} - {% if domain.is_editable %} + {% if is_editable %}

DNS name servers

No DNS name servers have been added yet. Before your domain can be used we’ll need information about your domain name servers.

Add DNS name servers {% else %} - {% include "includes/summary_item.html" with title='DNS name servers' domains='true' value='' edit_link=url editable=domain.is_editable %} + {% include "includes/summary_item.html" with title='DNS name servers' domains='true' value='' edit_link=url editable=is_editable %} {% endif %} {% endif %} {% url 'domain-org-name-address' pk=domain.id as url %} - {% include "includes/summary_item.html" with title='Organization name and mailing address' value=domain.domain_info address='true' edit_link=url editable=domain.is_editable %} + {% include "includes/summary_item.html" with title='Organization name and mailing address' value=domain.domain_info address='true' edit_link=url editable=is_editable %} {% url 'domain-senior-official' pk=domain.id as url %} - {% include "includes/summary_item.html" with title='Senior official' value=domain.domain_info.senior_official contact='true' edit_link=url editable=domain.is_editable %} + {% include "includes/summary_item.html" with title='Senior official' value=domain.domain_info.senior_official contact='true' edit_link=url editable=is_editable %} {# Conditionally display profile #} {% if not has_profile_feature_flag %} {% url 'domain-your-contact-information' pk=domain.id as url %} - {% include "includes/summary_item.html" with title='Your contact information' value=request.user contact='true' edit_link=url editable=domain.is_editable %} + {% include "includes/summary_item.html" with title='Your contact information' value=request.user contact='true' edit_link=url editable=is_editable %} {% endif %} {% url 'domain-security-email' pk=domain.id as url %} {% if security_email is not None and security_email not in hidden_security_emails%} - {% include "includes/summary_item.html" with title='Security email' value=security_email edit_link=url editable=domain.is_editable %} + {% include "includes/summary_item.html" with title='Security email' value=security_email edit_link=url editable=is_editable %} {% else %} - {% include "includes/summary_item.html" with title='Security email' value='None provided' edit_link=url editable=domain.is_editable %} + {% include "includes/summary_item.html" with title='Security email' value='None provided' edit_link=url editable=is_editable %} {% endif %} {% url 'domain-users' pk=domain.id as url %} - {% include "includes/summary_item.html" with title='Domain managers' users='true' list=True value=domain.permissions.all edit_link=url editable=domain.is_editable %} + {% include "includes/summary_item.html" with title='Domain managers' users='true' list=True value=domain.permissions.all edit_link=url editable=is_editable %} {% endblock %} {# domain_content #} diff --git a/src/registrar/templates/domain_sidebar.html b/src/registrar/templates/domain_sidebar.html index d61e5f45c..603822d0d 100644 --- a/src/registrar/templates/domain_sidebar.html +++ b/src/registrar/templates/domain_sidebar.html @@ -12,7 +12,7 @@ - {% if domain.is_editable %} + {% if is_editable %}
  • {% url 'domain-dns' pk=domain.id as url %} diff --git a/src/registrar/templates/includes/header_extended.html b/src/registrar/templates/includes/header_extended.html index c5fc02ebb..c516b9744 100644 --- a/src/registrar/templates/includes/header_extended.html +++ b/src/registrar/templates/includes/header_extended.html @@ -1,4 +1,5 @@ {% load static %} +{% load custom_filters %}
    @@ -14,8 +15,8 @@