+ {% block messages %}
+ {% include "includes/form_messages.html" %}
+ {% endblock %}
diff --git a/src/registrar/tests/test_url_auth.py b/src/registrar/tests/test_url_auth.py
index 34f80ac44..3e0514a85 100644
--- a/src/registrar/tests/test_url_auth.py
+++ b/src/registrar/tests/test_url_auth.py
@@ -23,6 +23,7 @@ SAMPLE_KWARGS = {
"content_type_id": "2",
"object_id": "3",
"domain": "whitehouse.gov",
+ "user_pk": "1",
}
# Our test suite will ignore some namespaces.
diff --git a/src/registrar/views/domain.py b/src/registrar/views/domain.py
index 0f894a985..e00c90b19 100644
--- a/src/registrar/views/domain.py
+++ b/src/registrar/views/domain.py
@@ -825,13 +825,19 @@ class DomainDeleteUserView(UserDomainRolePermissionDeleteView):
def get_success_message(self, delete_self = False):
"""Returns confirmation content for the deletion event """
+
+ # Grab the text representation of the user we want to delete
email_or_name = self.object.user.email
- if email_or_name is None:
+ if email_or_name is None or email_or_name.strip() == "":
email_or_name = self.object.user
+
+ # If the user is deleting themselves, return a special message.
+ # If not, return something more generic.
if delete_self:
message = f"You are no longer managing the domain {self.object.domain}."
else:
message = f"Removed {email_or_name} as a manager for this domain."
+
return message
def form_valid(self, form):
@@ -839,7 +845,7 @@ class DomainDeleteUserView(UserDomainRolePermissionDeleteView):
super().form_valid(form)
# Is the user deleting themselves? If so, display a different message
- delete_self = self.request.user.email == self.object.user.email
+ delete_self = self.request.user == self.object.user
# Add a success message
messages.success(self.request, self.get_success_message(delete_self))
@@ -851,7 +857,8 @@ class DomainDeleteUserView(UserDomainRolePermissionDeleteView):
response = super().post(request, *args, **kwargs)
# If the user is deleting themselves, redirect to home
- if self.request.user == self.object.user:
+ delete_self = self.request.user == self.object.user
+ if delete_self:
return redirect(reverse("home"))
return response
\ No newline at end of file
From f16382e946f62e8a9b0813d4a26f75d20b808ed9 Mon Sep 17 00:00:00 2001
From: zandercymatics <141044360+zandercymatics@users.noreply.github.com>
Date: Wed, 17 Jan 2024 09:41:19 -0700
Subject: [PATCH 16/40] Linting
---
src/registrar/views/application.py | 12 +++++++-
src/registrar/views/domain.py | 29 ++++++++-----------
src/registrar/views/utility/mixins.py | 6 ++--
.../views/utility/permission_views.py | 1 -
4 files changed, 25 insertions(+), 23 deletions(-)
diff --git a/src/registrar/views/application.py b/src/registrar/views/application.py
index 23c8cf55e..cfb16336b 100644
--- a/src/registrar/views/application.py
+++ b/src/registrar/views/application.py
@@ -10,6 +10,7 @@ from django.contrib import messages
from registrar.forms import application_wizard as forms
from registrar.models import DomainApplication
+from registrar.models.user import User
from registrar.utility import StrEnum
from registrar.views.utility import StepsHelper
@@ -131,11 +132,19 @@ class ApplicationWizard(ApplicationWizardPermissionView, TemplateView):
if self._application:
return self._application
+ # For linter. The else block should never be hit, but if it does,
+ # there may be a UI consideration. That will need to be handled in another ticket.
+ creator = None
+ if self.request.user is not None and isinstance(self.request.user, User):
+ creator = self.request.user
+ else:
+ raise ValueError("Invalid value for User")
+
if self.has_pk():
id = self.storage["application_id"]
try:
self._application = DomainApplication.objects.get(
- creator=self.request.user, # type: ignore
+ creator=creator,
pk=id,
)
return self._application
@@ -476,6 +485,7 @@ class DotgovDomain(ApplicationWizard):
self.application.save()
return response
+
class Purpose(ApplicationWizard):
template_name = "application_purpose.html"
forms = [forms.PurposeForm]
diff --git a/src/registrar/views/domain.py b/src/registrar/views/domain.py
index e00c90b19..d4a7b8066 100644
--- a/src/registrar/views/domain.py
+++ b/src/registrar/views/domain.py
@@ -34,7 +34,7 @@ from registrar.utility.errors import (
SecurityEmailErrorCodes,
)
from registrar.models.utility.contact_error import ContactError
-from registrar.views.utility.permission_views import UserDomainRolePermissionDeleteView, UserDomainRolePermissionView
+from registrar.views.utility.permission_views import UserDomainRolePermissionDeleteView
from ..forms import (
ContactForm,
@@ -643,7 +643,6 @@ class DomainUsersView(DomainBaseView):
return context
def _add_booleans_to_context(self, context):
-
# Determine if the current user can delete managers
domain_pk = None
can_delete_users = False
@@ -660,17 +659,17 @@ class DomainUsersView(DomainBaseView):
"""Adds modal buttons (and their HTML) to the context"""
# Create HTML for the modal button
modal_button = self._create_modal_button_html(
- button_name="delete_domain_manager",
+ button_name="delete_domain_manager",
button_text_content="Yes, remove domain manager",
- classes=["usa-button", "usa-button--secondary"]
+ classes=["usa-button", "usa-button--secondary"],
)
context["modal_button"] = modal_button
# Create HTML for the modal button when deleting yourself
- modal_button_self= self._create_modal_button_html(
+ modal_button_self = self._create_modal_button_html(
button_name="delete_domain_manager_self",
button_text_content="Yes, remove myself",
- classes=["usa-button", "usa-button--secondary"]
+ classes=["usa-button", "usa-button--secondary"],
)
context["modal_button_self"] = modal_button_self
@@ -686,11 +685,7 @@ class DomainUsersView(DomainBaseView):
html_class = f'class="{class_list}"' if class_list else None
- modal_button = (
- ''
- )
+ modal_button = ''
return modal_button
@@ -809,8 +804,8 @@ class DomainInvitationDeleteView(DomainInvitationPermissionDeleteView, SuccessMe
class DomainDeleteUserView(UserDomainRolePermissionDeleteView):
- """Inside of a domain's user management, a form for deleting users.
- """
+ """Inside of a domain's user management, a form for deleting users."""
+
object: UserDomainRole # workaround for type mismatch in DeleteView
def get_object(self, queryset=None):
@@ -823,8 +818,8 @@ class DomainDeleteUserView(UserDomainRolePermissionDeleteView):
"""Refreshes the page after a delete is successful"""
return reverse("domain-users", kwargs={"pk": self.object.domain.id})
- def get_success_message(self, delete_self = False):
- """Returns confirmation content for the deletion event """
+ def get_success_message(self, delete_self=False):
+ """Returns confirmation content for the deletion event"""
# Grab the text representation of the user we want to delete
email_or_name = self.object.user.email
@@ -860,5 +855,5 @@ class DomainDeleteUserView(UserDomainRolePermissionDeleteView):
delete_self = self.request.user == self.object.user
if delete_self:
return redirect(reverse("home"))
-
- return response
\ No newline at end of file
+
+ return response
diff --git a/src/registrar/views/utility/mixins.py b/src/registrar/views/utility/mixins.py
index bfa9d7330..980c0dad5 100644
--- a/src/registrar/views/utility/mixins.py
+++ b/src/registrar/views/utility/mixins.py
@@ -307,7 +307,7 @@ class UserDomainRolePermission(PermissionsLoginMixin):
# Check if the UserDomainRole object exists, then check
# if the user requesting the delete has permissions to do so
has_delete_permission = UserDomainRole.objects.filter(
- user=user_pk,
+ user=user_pk,
domain=domain_pk,
domain__permissions__user=self.request.user,
).exists()
@@ -316,9 +316,7 @@ class UserDomainRolePermission(PermissionsLoginMixin):
# Check if more than one manager exists on the domain.
# If only one exists, prevent this from happening
- has_multiple_managers = len(UserDomainRole.objects.filter(
- domain=domain_pk
- )) > 1
+ has_multiple_managers = len(UserDomainRole.objects.filter(domain=domain_pk)) > 1
if not has_multiple_managers:
return False
diff --git a/src/registrar/views/utility/permission_views.py b/src/registrar/views/utility/permission_views.py
index 5c5ebc494..295fbc65c 100644
--- a/src/registrar/views/utility/permission_views.py
+++ b/src/registrar/views/utility/permission_views.py
@@ -152,4 +152,3 @@ class UserDomainRolePermissionDeleteView(UserDomainRolePermissionView, DeleteVie
model = UserDomainRole
# variable name in template context for the model object
context_object_name = "userdomainrole"
-
From 1a5c8930edbc591f9854c4795460a3a66d6e1352 Mon Sep 17 00:00:00 2001
From: zandercymatics <141044360+zandercymatics@users.noreply.github.com>
Date: Wed, 17 Jan 2024 14:37:13 -0700
Subject: [PATCH 17/40] Button align
---
src/registrar/assets/sass/_theme/_buttons.scss | 16 ++++++++++------
src/registrar/assets/sass/_theme/_tables.scss | 4 ----
src/registrar/templates/domain_users.html | 6 +++---
3 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/src/registrar/assets/sass/_theme/_buttons.scss b/src/registrar/assets/sass/_theme/_buttons.scss
index c890b7a55..78c06f0f4 100644
--- a/src/registrar/assets/sass/_theme/_buttons.scss
+++ b/src/registrar/assets/sass/_theme/_buttons.scss
@@ -26,27 +26,31 @@ a.usa-button {
text-decoration: none;
}
-a.usa-button.disabled-link,
-a.usa-button--unstyled.disabled-link {
+a.usa-button.disabled-link {
background-color: #ccc !important;
color: #454545 !important
}
-a.usa-button.disabled-link:hover,
-a.usa-button--unstyled.disabled-link {
+a.usa-button.disabled-link:hover{
background-color: #ccc !important;
cursor: not-allowed !important;
color: #454545 !important
}
-a.usa-button.disabled-link:focus,
-a.usa-button--unstyled.disabled-link {
+a.usa-button.disabled-link:focus {
background-color: #ccc !important;
cursor: not-allowed !important;
outline: none !important;
color: #454545 !important
}
+a.usa-button--unstyled.disabled-link,
+a.usa-button--unstyled.disabled-link:hover,
+a.usa-button--unstyled.disabled-link:focus {
+ cursor: not-allowed !important;
+ outline: none !important;
+}
+
a.usa-button:not(.usa-button--unstyled, .usa-button--outline) {
color: color('white');
}
diff --git a/src/registrar/assets/sass/_theme/_tables.scss b/src/registrar/assets/sass/_theme/_tables.scss
index 892427f82..6dcc6f3bc 100644
--- a/src/registrar/assets/sass/_theme/_tables.scss
+++ b/src/registrar/assets/sass/_theme/_tables.scss
@@ -25,10 +25,6 @@
color: color('primary-darker');
padding-bottom: units(2px);
}
- td.shift-action-button {
- padding-right: 0;
- transform: translateX(10px);
- }
}
.dotgov-table {
diff --git a/src/registrar/templates/domain_users.html b/src/registrar/templates/domain_users.html
index 216c21942..e78d88781 100644
--- a/src/registrar/templates/domain_users.html
+++ b/src/registrar/templates/domain_users.html
@@ -29,7 +29,7 @@
@@ -39,7 +39,7 @@
{{ permission.user.email }}
{{ permission.role|title }} |
-
+ |
{% if can_delete_users %}
| {{ invitation.created_at|date }} |
{{ invitation.status|title }} |
- |