mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-07-25 20:18:38 +02:00
Readd modelforms
This commit is contained in:
parent
adfd6be7bb
commit
c3480893da
1 changed files with 166 additions and 110 deletions
|
@ -5,12 +5,14 @@ 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 django.utils.safestring import mark_safe
|
||||||
|
|
||||||
from registrar.models import (
|
from registrar.models import (
|
||||||
User,
|
PortfolioInvitation,
|
||||||
UserPortfolioPermission,
|
UserPortfolioPermission,
|
||||||
DomainInformation,
|
DomainInformation,
|
||||||
Portfolio,
|
Portfolio,
|
||||||
SeniorOfficial,
|
SeniorOfficial,
|
||||||
|
User,
|
||||||
)
|
)
|
||||||
from registrar.models.utility.portfolio_helper import UserPortfolioPermissionChoices, UserPortfolioRoleChoices
|
from registrar.models.utility.portfolio_helper import UserPortfolioPermissionChoices, UserPortfolioRoleChoices
|
||||||
|
|
||||||
|
@ -109,6 +111,169 @@ class PortfolioSeniorOfficialForm(forms.ModelForm):
|
||||||
return cleaned_data
|
return cleaned_data
|
||||||
|
|
||||||
|
|
||||||
|
class PortfolioMemberForm(forms.ModelForm):
|
||||||
|
"""
|
||||||
|
Form for updating a portfolio member.
|
||||||
|
"""
|
||||||
|
|
||||||
|
roles = forms.MultipleChoiceField(
|
||||||
|
choices=UserPortfolioRoleChoices.choices,
|
||||||
|
widget=forms.SelectMultiple(attrs={"class": "usa-select"}),
|
||||||
|
required=False,
|
||||||
|
label="Roles",
|
||||||
|
)
|
||||||
|
|
||||||
|
additional_permissions = forms.MultipleChoiceField(
|
||||||
|
choices=UserPortfolioPermissionChoices.choices,
|
||||||
|
widget=forms.SelectMultiple(attrs={"class": "usa-select"}),
|
||||||
|
required=False,
|
||||||
|
label="Additional Permissions",
|
||||||
|
)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = UserPortfolioPermission
|
||||||
|
fields = [
|
||||||
|
"roles",
|
||||||
|
"additional_permissions",
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
class PortfolioInvitedMemberForm(forms.ModelForm):
|
||||||
|
"""
|
||||||
|
Form for updating a portfolio invited member.
|
||||||
|
"""
|
||||||
|
|
||||||
|
roles = forms.MultipleChoiceField(
|
||||||
|
choices=UserPortfolioRoleChoices.choices,
|
||||||
|
widget=forms.SelectMultiple(attrs={"class": "usa-select"}),
|
||||||
|
required=False,
|
||||||
|
label="Roles",
|
||||||
|
)
|
||||||
|
|
||||||
|
additional_permissions = forms.MultipleChoiceField(
|
||||||
|
choices=UserPortfolioPermissionChoices.choices,
|
||||||
|
widget=forms.SelectMultiple(attrs={"class": "usa-select"}),
|
||||||
|
required=False,
|
||||||
|
label="Additional Permissions",
|
||||||
|
)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = PortfolioInvitation
|
||||||
|
fields = [
|
||||||
|
"roles",
|
||||||
|
"additional_permissions",
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
class NewMemberForm(forms.ModelForm):
|
||||||
|
member_access_level = forms.ChoiceField(
|
||||||
|
label="Select permission",
|
||||||
|
choices=[("admin", "Admin Access"), ("basic", "Basic Access")],
|
||||||
|
widget=forms.RadioSelect(attrs={"class": "usa-radio__input usa-radio__input--tile"}),
|
||||||
|
required=True,
|
||||||
|
error_messages={
|
||||||
|
"required": "Member access level is required",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
admin_org_domain_request_permissions = forms.ChoiceField(
|
||||||
|
label="Select permission",
|
||||||
|
choices=[("view_only", "View all requests"), ("view_and_create", "View all requests plus create requests")],
|
||||||
|
widget=forms.RadioSelect,
|
||||||
|
required=True,
|
||||||
|
error_messages={
|
||||||
|
"required": "Admin domain request permission is required",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
admin_org_members_permissions = forms.ChoiceField(
|
||||||
|
label="Select permission",
|
||||||
|
choices=[("view_only", "View all members"), ("view_and_create", "View all members plus manage members")],
|
||||||
|
widget=forms.RadioSelect,
|
||||||
|
required=True,
|
||||||
|
error_messages={
|
||||||
|
"required": "Admin member permission is required",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
basic_org_domain_request_permissions = forms.ChoiceField(
|
||||||
|
label="Select permission",
|
||||||
|
choices=[
|
||||||
|
("view_only", "View all requests"),
|
||||||
|
("view_and_create", "View all requests plus create requests"),
|
||||||
|
("no_access", "No access"),
|
||||||
|
],
|
||||||
|
widget=forms.RadioSelect,
|
||||||
|
required=True,
|
||||||
|
error_messages={
|
||||||
|
"required": "Basic member permission is required",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
email = forms.EmailField(
|
||||||
|
label="Enter the email of the member you'd like to invite",
|
||||||
|
max_length=None,
|
||||||
|
error_messages={
|
||||||
|
"invalid": ("Enter an email address in the required format, like name@example.com."),
|
||||||
|
"required": ("Enter an email address in the required format, like name@example.com."),
|
||||||
|
},
|
||||||
|
validators=[
|
||||||
|
MaxLengthValidator(
|
||||||
|
320,
|
||||||
|
message="Response must be less than 320 characters.",
|
||||||
|
)
|
||||||
|
],
|
||||||
|
required=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = User
|
||||||
|
fields = ["email"]
|
||||||
|
|
||||||
|
def clean(self):
|
||||||
|
cleaned_data = super().clean()
|
||||||
|
|
||||||
|
# Lowercase the value of the 'email' field
|
||||||
|
email_value = cleaned_data.get("email")
|
||||||
|
if email_value:
|
||||||
|
cleaned_data["email"] = email_value.lower()
|
||||||
|
|
||||||
|
##########################################
|
||||||
|
# TODO: future ticket
|
||||||
|
# (invite new member)
|
||||||
|
##########################################
|
||||||
|
# Check for an existing user (if there isn't any, send an invite)
|
||||||
|
# if email_value:
|
||||||
|
# try:
|
||||||
|
# existingUser = User.objects.get(email=email_value)
|
||||||
|
# except User.DoesNotExist:
|
||||||
|
# raise forms.ValidationError("User with this email does not exist.")
|
||||||
|
|
||||||
|
member_access_level = cleaned_data.get("member_access_level")
|
||||||
|
|
||||||
|
# Intercept the error messages so that we don't validate hidden inputs
|
||||||
|
if not member_access_level:
|
||||||
|
# If no member access level has been selected, delete error messages
|
||||||
|
# for all hidden inputs (which is everything except the e-mail input
|
||||||
|
# and member access selection)
|
||||||
|
for field in self.fields:
|
||||||
|
if field in self.errors and field != "email" and field != "member_access_level":
|
||||||
|
del self.errors[field]
|
||||||
|
return cleaned_data
|
||||||
|
|
||||||
|
basic_dom_req_error = "basic_org_domain_request_permissions"
|
||||||
|
admin_dom_req_error = "admin_org_domain_request_permissions"
|
||||||
|
admin_member_error = "admin_org_members_permissions"
|
||||||
|
|
||||||
|
if member_access_level == "admin" and basic_dom_req_error in self.errors:
|
||||||
|
# remove the error messages pertaining to basic permission inputs
|
||||||
|
del self.errors[basic_dom_req_error]
|
||||||
|
elif member_access_level == "basic":
|
||||||
|
# remove the error messages pertaining to admin permission inputs
|
||||||
|
if admin_dom_req_error in self.errors:
|
||||||
|
del self.errors[admin_dom_req_error]
|
||||||
|
if admin_member_error in self.errors:
|
||||||
|
del self.errors[admin_member_error]
|
||||||
|
return cleaned_data
|
||||||
|
|
||||||
|
|
||||||
class BasePortfolioMemberForm(forms.Form):
|
class BasePortfolioMemberForm(forms.Form):
|
||||||
required_star = '<abbr class="usa-hint usa-hint--required" title="required">*</abbr>'
|
required_star = '<abbr class="usa-hint usa-hint--required" title="required">*</abbr>'
|
||||||
role = forms.ChoiceField(
|
role = forms.ChoiceField(
|
||||||
|
@ -332,112 +497,3 @@ class BasePortfolioMemberForm(forms.Form):
|
||||||
role_permissions = UserPortfolioPermission.get_portfolio_permissions(instance.roles, [], get_list=False)
|
role_permissions = UserPortfolioPermission.get_portfolio_permissions(instance.roles, [], get_list=False)
|
||||||
instance.additional_permissions = list(additional_permissions - role_permissions)
|
instance.additional_permissions = list(additional_permissions - role_permissions)
|
||||||
return instance
|
return instance
|
||||||
|
|
||||||
|
|
||||||
class NewMemberForm(forms.ModelForm):
|
|
||||||
member_access_level = forms.ChoiceField(
|
|
||||||
label="Select permission",
|
|
||||||
choices=[("admin", "Admin Access"), ("basic", "Basic Access")],
|
|
||||||
widget=forms.RadioSelect(attrs={"class": "usa-radio__input usa-radio__input--tile"}),
|
|
||||||
required=True,
|
|
||||||
error_messages={
|
|
||||||
"required": "Member access level is required",
|
|
||||||
},
|
|
||||||
)
|
|
||||||
admin_org_domain_request_permissions = forms.ChoiceField(
|
|
||||||
label="Select permission",
|
|
||||||
choices=[("view_only", "View all requests"), ("view_and_create", "View all requests plus create requests")],
|
|
||||||
widget=forms.RadioSelect,
|
|
||||||
required=True,
|
|
||||||
error_messages={
|
|
||||||
"required": "Admin domain request permission is required",
|
|
||||||
},
|
|
||||||
)
|
|
||||||
admin_org_members_permissions = forms.ChoiceField(
|
|
||||||
label="Select permission",
|
|
||||||
choices=[("view_only", "View all members"), ("view_and_create", "View all members plus manage members")],
|
|
||||||
widget=forms.RadioSelect,
|
|
||||||
required=True,
|
|
||||||
error_messages={
|
|
||||||
"required": "Admin member permission is required",
|
|
||||||
},
|
|
||||||
)
|
|
||||||
basic_org_domain_request_permissions = forms.ChoiceField(
|
|
||||||
label="Select permission",
|
|
||||||
choices=[
|
|
||||||
("view_only", "View all requests"),
|
|
||||||
("view_and_create", "View all requests plus create requests"),
|
|
||||||
("no_access", "No access"),
|
|
||||||
],
|
|
||||||
widget=forms.RadioSelect,
|
|
||||||
required=True,
|
|
||||||
error_messages={
|
|
||||||
"required": "Basic member permission is required",
|
|
||||||
},
|
|
||||||
)
|
|
||||||
|
|
||||||
email = forms.EmailField(
|
|
||||||
label="Enter the email of the member you'd like to invite",
|
|
||||||
max_length=None,
|
|
||||||
error_messages={
|
|
||||||
"invalid": ("Enter an email address in the required format, like name@example.com."),
|
|
||||||
"required": ("Enter an email address in the required format, like name@example.com."),
|
|
||||||
},
|
|
||||||
validators=[
|
|
||||||
MaxLengthValidator(
|
|
||||||
320,
|
|
||||||
message="Response must be less than 320 characters.",
|
|
||||||
)
|
|
||||||
],
|
|
||||||
required=True,
|
|
||||||
)
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = User
|
|
||||||
fields = ["email"]
|
|
||||||
|
|
||||||
def clean(self):
|
|
||||||
cleaned_data = super().clean()
|
|
||||||
|
|
||||||
# Lowercase the value of the 'email' field
|
|
||||||
email_value = cleaned_data.get("email")
|
|
||||||
if email_value:
|
|
||||||
cleaned_data["email"] = email_value.lower()
|
|
||||||
|
|
||||||
##########################################
|
|
||||||
# TODO: future ticket
|
|
||||||
# (invite new member)
|
|
||||||
##########################################
|
|
||||||
# Check for an existing user (if there isn't any, send an invite)
|
|
||||||
# if email_value:
|
|
||||||
# try:
|
|
||||||
# existingUser = User.objects.get(email=email_value)
|
|
||||||
# except User.DoesNotExist:
|
|
||||||
# raise forms.ValidationError("User with this email does not exist.")
|
|
||||||
|
|
||||||
member_access_level = cleaned_data.get("member_access_level")
|
|
||||||
|
|
||||||
# Intercept the error messages so that we don't validate hidden inputs
|
|
||||||
if not member_access_level:
|
|
||||||
# If no member access level has been selected, delete error messages
|
|
||||||
# for all hidden inputs (which is everything except the e-mail input
|
|
||||||
# and member access selection)
|
|
||||||
for field in self.fields:
|
|
||||||
if field in self.errors and field != "email" and field != "member_access_level":
|
|
||||||
del self.errors[field]
|
|
||||||
return cleaned_data
|
|
||||||
|
|
||||||
basic_dom_req_error = "basic_org_domain_request_permissions"
|
|
||||||
admin_dom_req_error = "admin_org_domain_request_permissions"
|
|
||||||
admin_member_error = "admin_org_members_permissions"
|
|
||||||
|
|
||||||
if member_access_level == "admin" and basic_dom_req_error in self.errors:
|
|
||||||
# remove the error messages pertaining to basic permission inputs
|
|
||||||
del self.errors[basic_dom_req_error]
|
|
||||||
elif member_access_level == "basic":
|
|
||||||
# remove the error messages pertaining to admin permission inputs
|
|
||||||
if admin_dom_req_error in self.errors:
|
|
||||||
del self.errors[admin_dom_req_error]
|
|
||||||
if admin_member_error in self.errors:
|
|
||||||
del self.errors[admin_member_error]
|
|
||||||
return cleaned_data
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue