lint and test

This commit is contained in:
David Kennedy 2025-01-24 17:14:18 -05:00
parent c47c7ca6bd
commit 535a41c13e
No known key found for this signature in database
GPG key ID: 6528A5386E66B96B
4 changed files with 30 additions and 23 deletions

View file

@ -4,7 +4,6 @@ import logging
from django import forms from django import forms
from django.core.validators import RegexValidator from django.core.validators import RegexValidator
from django.core.validators import MaxLengthValidator from django.core.validators import MaxLengthValidator
from django.utils.safestring import mark_safe
from registrar.forms.utility.combobox import ComboboxWidget from registrar.forms.utility.combobox import ComboboxWidget
from registrar.models import ( from registrar.models import (
@ -143,7 +142,6 @@ class BasePortfolioMemberForm(forms.ModelForm):
("no_access", "No access"), ("no_access", "No access"),
(UserPortfolioPermissionChoices.VIEW_ALL_REQUESTS.value, "Viewer"), (UserPortfolioPermissionChoices.VIEW_ALL_REQUESTS.value, "Viewer"),
(UserPortfolioPermissionChoices.EDIT_REQUESTS.value, "Creator"), (UserPortfolioPermissionChoices.EDIT_REQUESTS.value, "Creator"),
], ],
widget=forms.RadioSelect, widget=forms.RadioSelect,
required=False, required=False,
@ -166,7 +164,6 @@ class BasePortfolioMemberForm(forms.ModelForm):
}, },
) )
# Tracks what form elements are required for a given role choice. # Tracks what form elements are required for a given role choice.
# All of the fields included here have "required=False" by default as they are conditionally required. # All of the fields included here have "required=False" by default as they are conditionally required.
# see def clean() for more details. # see def clean() for more details.
@ -191,20 +188,22 @@ class BasePortfolioMemberForm(forms.ModelForm):
Update field descriptions. Update field descriptions.
""" """
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
# Adds a <p> description beneath each option # Adds a <p> description beneath each option
self.fields["domain_permissions"].descriptions = { self.fields["domain_permissions"].descriptions = {
UserPortfolioPermissionChoices.VIEW_MANAGED_DOMAINS.value: "Can view only the domains they manage", UserPortfolioPermissionChoices.VIEW_MANAGED_DOMAINS.value: "Can view only the domains they manage",
UserPortfolioPermissionChoices.VIEW_ALL_DOMAINS.value: "Can view all domains for the organization", UserPortfolioPermissionChoices.VIEW_ALL_DOMAINS.value: "Can view all domains for the organization",
} }
self.fields["domain_request_permissions"].descriptions = { self.fields["domain_request_permissions"].descriptions = {
UserPortfolioPermissionChoices.EDIT_REQUESTS.value: "Can view all domain requests for the organization and create requests", UserPortfolioPermissionChoices.EDIT_REQUESTS.value: (
"Can view all domain requests for the organization and create requests"
),
UserPortfolioPermissionChoices.VIEW_ALL_REQUESTS.value: "Can view all domain requests for the organization", UserPortfolioPermissionChoices.VIEW_ALL_REQUESTS.value: "Can view all domain requests for the organization",
"no_access": "Cannot view or create domain requests" "no_access": "Cannot view or create domain requests",
} }
self.fields["member_permissions"].descriptions = { self.fields["member_permissions"].descriptions = {
UserPortfolioPermissionChoices.VIEW_MEMBERS.value: "Can view all members permissions", UserPortfolioPermissionChoices.VIEW_MEMBERS.value: "Can view all members permissions",
"no_access": "Cannot view member permissions" "no_access": "Cannot view member permissions",
} }
# Map model instance values to custom form fields # Map model instance values to custom form fields
@ -299,9 +298,15 @@ class BasePortfolioMemberForm(forms.ModelForm):
self.initial["role"] = selected_role self.initial["role"] = selected_role
is_member = selected_role == UserPortfolioRoleChoices.ORGANIZATION_MEMBER is_member = selected_role == UserPortfolioRoleChoices.ORGANIZATION_MEMBER
if is_member: if is_member:
# Edgecase: Member and domain request use a special form value for None called "no_access". This ensures a form selection. # Edgecase: Member and domain request use a special form value for None called "no_access".
selected_domain_permission = next((perm for perm in domain_perms if perm in perms), UserPortfolioPermissionChoices.VIEW_MANAGED_DOMAINS.value) # This ensures a form selection.
selected_domain_request_permission = next((perm for perm in domain_request_perms if perm in perms), "no_access") selected_domain_permission = next(
(perm for perm in domain_perms if perm in perms),
UserPortfolioPermissionChoices.VIEW_MANAGED_DOMAINS.value,
)
selected_domain_request_permission = next(
(perm for perm in domain_request_perms if perm in perms), "no_access"
)
selected_member_permission = next((perm for perm in member_perms if perm in perms), "no_access") selected_member_permission = next((perm for perm in member_perms if perm in perms), "no_access")
self.initial["domain_request_permissions"] = selected_domain_request_permission self.initial["domain_request_permissions"] = selected_domain_request_permission
self.initial["domain_permissions"] = selected_domain_permission self.initial["domain_permissions"] = selected_domain_permission

View file

@ -572,14 +572,18 @@ class TestBasePortfolioMemberForms(TestCase):
form = self._assert_form_is_valid(PortfolioMemberForm, data, user_portfolio_permission) form = self._assert_form_is_valid(PortfolioMemberForm, data, user_portfolio_permission)
cleaned_data = form.cleaned_data cleaned_data = form.cleaned_data
self.assertEqual(cleaned_data["roles"], [UserPortfolioRoleChoices.ORGANIZATION_MEMBER.value]) self.assertEqual(cleaned_data["roles"], [UserPortfolioRoleChoices.ORGANIZATION_MEMBER.value])
self.assertEqual(cleaned_data["domain_request_permissions"], UserPortfolioPermissionChoices.VIEW_ALL_REQUESTS.value) self.assertEqual(
cleaned_data["domain_request_permissions"], UserPortfolioPermissionChoices.VIEW_ALL_REQUESTS.value
)
self.assertEqual(cleaned_data["domain_permissions"], UserPortfolioPermissionChoices.VIEW_ALL_DOMAINS.value) self.assertEqual(cleaned_data["domain_permissions"], UserPortfolioPermissionChoices.VIEW_ALL_DOMAINS.value)
self.assertEqual(cleaned_data["member_permissions"], UserPortfolioPermissionChoices.VIEW_MEMBERS.value) self.assertEqual(cleaned_data["member_permissions"], UserPortfolioPermissionChoices.VIEW_MEMBERS.value)
form = self._assert_form_is_valid(PortfolioInvitedMemberForm, data, portfolio_invitation) form = self._assert_form_is_valid(PortfolioInvitedMemberForm, data, portfolio_invitation)
cleaned_data = form.cleaned_data cleaned_data = form.cleaned_data
self.assertEqual(cleaned_data["roles"], [UserPortfolioRoleChoices.ORGANIZATION_MEMBER.value]) self.assertEqual(cleaned_data["roles"], [UserPortfolioRoleChoices.ORGANIZATION_MEMBER.value])
self.assertEqual(cleaned_data["domain_request_permissions"], UserPortfolioPermissionChoices.VIEW_ALL_REQUESTS.value) self.assertEqual(
cleaned_data["domain_request_permissions"], UserPortfolioPermissionChoices.VIEW_ALL_REQUESTS.value
)
self.assertEqual(cleaned_data["domain_permissions"], UserPortfolioPermissionChoices.VIEW_ALL_DOMAINS.value) self.assertEqual(cleaned_data["domain_permissions"], UserPortfolioPermissionChoices.VIEW_ALL_DOMAINS.value)
self.assertEqual(cleaned_data["member_permissions"], UserPortfolioPermissionChoices.VIEW_MEMBERS.value) self.assertEqual(cleaned_data["member_permissions"], UserPortfolioPermissionChoices.VIEW_MEMBERS.value)
@ -595,7 +599,9 @@ class TestBasePortfolioMemberForms(TestCase):
form = self._assert_form_is_valid(PortfolioNewMemberForm, data) form = self._assert_form_is_valid(PortfolioNewMemberForm, data)
cleaned_data = form.cleaned_data cleaned_data = form.cleaned_data
self.assertEqual(cleaned_data["roles"], [UserPortfolioRoleChoices.ORGANIZATION_MEMBER.value]) self.assertEqual(cleaned_data["roles"], [UserPortfolioRoleChoices.ORGANIZATION_MEMBER.value])
self.assertEqual(cleaned_data["domain_request_permissions"], UserPortfolioPermissionChoices.VIEW_ALL_REQUESTS.value) self.assertEqual(
cleaned_data["domain_request_permissions"], UserPortfolioPermissionChoices.VIEW_ALL_REQUESTS.value
)
self.assertEqual(cleaned_data["domain_permissions"], UserPortfolioPermissionChoices.VIEW_ALL_DOMAINS.value) self.assertEqual(cleaned_data["domain_permissions"], UserPortfolioPermissionChoices.VIEW_ALL_DOMAINS.value)
self.assertEqual(cleaned_data["member_permissions"], UserPortfolioPermissionChoices.VIEW_MEMBERS.value) self.assertEqual(cleaned_data["member_permissions"], UserPortfolioPermissionChoices.VIEW_MEMBERS.value)

View file

@ -885,7 +885,7 @@ class MemberExportTest(MockDbForIndividualTests, MockEppLib):
"big_lebowski@dude.co,False,help@get.gov,2022-04-01,Invalid date,None," "big_lebowski@dude.co,False,help@get.gov,2022-04-01,Invalid date,None,"
"Viewer,True,1,cdomain1.gov\n" "Viewer,True,1,cdomain1.gov\n"
"cozy_staffuser@igorville.gov,True,help@get.gov,2022-04-01,2024-02-01," "cozy_staffuser@igorville.gov,True,help@get.gov,2022-04-01,2024-02-01,"
"Viewer,Viewer,False,0,\n" "Viewer Requester,Manager,False,0,\n"
"icy_superuser@igorville.gov,True,help@get.gov,2022-04-01,2024-02-01," "icy_superuser@igorville.gov,True,help@get.gov,2022-04-01,2024-02-01,"
"Viewer Requester,Manager,False,0,\n" "Viewer Requester,Manager,False,0,\n"
"meoward@rocks.com,False,big_lebowski@dude.co,2022-04-01,Invalid date,None," "meoward@rocks.com,False,big_lebowski@dude.co,2022-04-01,Invalid date,None,"
@ -899,7 +899,7 @@ class MemberExportTest(MockDbForIndividualTests, MockEppLib):
"nonexistentmember_4@igorville.gov,True,help@get.gov,Unretrieved,Invited," "nonexistentmember_4@igorville.gov,True,help@get.gov,Unretrieved,Invited,"
"Viewer Requester,Manager,False,0,\n" "Viewer Requester,Manager,False,0,\n"
"nonexistentmember_5@igorville.gov,True,help@get.gov,Unretrieved,Invited," "nonexistentmember_5@igorville.gov,True,help@get.gov,Unretrieved,Invited,"
"Viewer,Viewer,False,0,\n" "Viewer Requester,Manager,False,0,\n"
"tired_sleepy@igorville.gov,False,System,2022-04-01,Invalid date,Viewer," "tired_sleepy@igorville.gov,False,System,2022-04-01,Invalid date,Viewer,"
"None,False,0,\n" "None,False,0,\n"
) )

View file

@ -1422,7 +1422,7 @@ class TestPortfolio(WebTest):
permission = UserPortfolioPermission.objects.get(user=self.user, portfolio=self.portfolio) permission = UserPortfolioPermission.objects.get(user=self.user, portfolio=self.portfolio)
# Update to basic member with view members permission # Update to basic member with view members permission
permission.roles=[UserPortfolioRoleChoices.ORGANIZATION_MEMBER] permission.roles = [UserPortfolioRoleChoices.ORGANIZATION_MEMBER]
permission.additional_permissions = [ permission.additional_permissions = [
UserPortfolioPermissionChoices.VIEW_MEMBERS, UserPortfolioPermissionChoices.VIEW_MEMBERS,
] ]
@ -3564,14 +3564,10 @@ class TestEditPortfolioMemberView(WebTest):
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
self.assertEqual( self.assertEqual(
response.context["form"].errors["domain_request_permissions"][0], response.context["form"].errors["domain_request_permissions"][0],
"Domain request permission is required", "Domain request permission is required.",
)
self.assertEqual(
response.context["form"].errors["member_permissions"][0], "Member permission is required"
)
self.assertEqual(
response.context["form"].errors["domain_permissions"][0], "Domain permission is required"
) )
self.assertEqual(response.context["form"].errors["member_permissions"][0], "Member permission is required.")
self.assertEqual(response.context["form"].errors["domain_permissions"][0], "Domain permission is required.")
@less_console_noise_decorator @less_console_noise_decorator
@override_flag("organization_feature", active=True) @override_flag("organization_feature", active=True)