mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-07-30 22:46:30 +02:00
ui wip
This commit is contained in:
parent
1cae575814
commit
ca9810d9c6
4 changed files with 101 additions and 106 deletions
|
@ -125,8 +125,7 @@ class BasePortfolioMemberForm(forms.ModelForm):
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
domain_permission_member = forms.ChoiceField(
|
domain_permissions = forms.ChoiceField(
|
||||||
label=mark_safe(f"Select permission {required_star}"), # nosec
|
|
||||||
choices=[
|
choices=[
|
||||||
(UserPortfolioPermissionChoices.VIEW_MANAGED_DOMAINS.value, "Viewer, limited"),
|
(UserPortfolioPermissionChoices.VIEW_MANAGED_DOMAINS.value, "Viewer, limited"),
|
||||||
(UserPortfolioPermissionChoices.VIEW_ALL_DOMAINS.value, "Viewer, all"),
|
(UserPortfolioPermissionChoices.VIEW_ALL_DOMAINS.value, "Viewer, all"),
|
||||||
|
@ -138,8 +137,7 @@ class BasePortfolioMemberForm(forms.ModelForm):
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
domain_request_permission_member = forms.ChoiceField(
|
domain_request_permissions = forms.ChoiceField(
|
||||||
label=mark_safe(f"Select permission {required_star}"), # nosec
|
|
||||||
choices=[
|
choices=[
|
||||||
("no_access", "No access"),
|
("no_access", "No access"),
|
||||||
(UserPortfolioPermissionChoices.VIEW_ALL_REQUESTS.value, "Viewer"),
|
(UserPortfolioPermissionChoices.VIEW_ALL_REQUESTS.value, "Viewer"),
|
||||||
|
@ -153,8 +151,7 @@ class BasePortfolioMemberForm(forms.ModelForm):
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
member_permission_member = forms.ChoiceField(
|
member_permissions = forms.ChoiceField(
|
||||||
label=mark_safe(f"Select permission {required_star}"), # nosec
|
|
||||||
choices=[
|
choices=[
|
||||||
("no_access", "No access"),
|
("no_access", "No access"),
|
||||||
(UserPortfolioPermissionChoices.VIEW_MEMBERS.value, "Viewer"),
|
(UserPortfolioPermissionChoices.VIEW_MEMBERS.value, "Viewer"),
|
||||||
|
@ -173,9 +170,9 @@ class BasePortfolioMemberForm(forms.ModelForm):
|
||||||
ROLE_REQUIRED_FIELDS = {
|
ROLE_REQUIRED_FIELDS = {
|
||||||
UserPortfolioRoleChoices.ORGANIZATION_ADMIN: [],
|
UserPortfolioRoleChoices.ORGANIZATION_ADMIN: [],
|
||||||
UserPortfolioRoleChoices.ORGANIZATION_MEMBER: [
|
UserPortfolioRoleChoices.ORGANIZATION_MEMBER: [
|
||||||
"domain_permission_member",
|
"domain_permissions",
|
||||||
"member_permission_member",
|
"member_permissions",
|
||||||
"domain_request_permission_member",
|
"domain_request_permissions",
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -191,15 +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 role option
|
# Adds a <p> description beneath each role option
|
||||||
self.fields["role"].descriptions = {
|
# self.fields["role"].descriptions = {
|
||||||
"organization_admin": UserPortfolioRoleChoices.get_role_description(
|
# "organization_admin": UserPortfolioRoleChoices.get_role_description(
|
||||||
UserPortfolioRoleChoices.ORGANIZATION_ADMIN
|
# UserPortfolioRoleChoices.ORGANIZATION_ADMIN
|
||||||
),
|
# ),
|
||||||
"organization_member": UserPortfolioRoleChoices.get_role_description(
|
# "organization_member": UserPortfolioRoleChoices.get_role_description(
|
||||||
UserPortfolioRoleChoices.ORGANIZATION_MEMBER
|
# UserPortfolioRoleChoices.ORGANIZATION_MEMBER
|
||||||
),
|
# ),
|
||||||
|
# }
|
||||||
|
|
||||||
|
self.fields["domain_permissions"].descriptions = {
|
||||||
|
UserPortfolioPermissionChoices.VIEW_MANAGED_DOMAINS.value: "test1",
|
||||||
|
UserPortfolioPermissionChoices.VIEW_ALL_DOMAINS.value: "test2",
|
||||||
}
|
}
|
||||||
|
|
||||||
# Map model instance values to custom form fields
|
# Map model instance values to custom form fields
|
||||||
if self.instance:
|
if self.instance:
|
||||||
self.map_instance_to_initial()
|
self.map_instance_to_initial()
|
||||||
|
@ -223,12 +227,12 @@ class BasePortfolioMemberForm(forms.ModelForm):
|
||||||
self.add_error(field_name, self.fields.get(field_name).error_messages.get("required"))
|
self.add_error(field_name, self.fields.get(field_name).error_messages.get("required"))
|
||||||
|
|
||||||
# Edgecase: Member uses a special form value for None called "no_access".
|
# Edgecase: Member uses a special form value for None called "no_access".
|
||||||
if cleaned_data.get("domain_request_permission_member") == "no_access":
|
if cleaned_data.get("domain_request_permissions") == "no_access":
|
||||||
cleaned_data["domain_request_permission_member"] = None
|
cleaned_data["domain_request_permissions"] = None
|
||||||
|
|
||||||
# Edgecase: Member uses a special form value for None called "no_access".
|
# Edgecase: Member uses a special form value for None called "no_access".
|
||||||
if cleaned_data.get("member_permission_member") == "no_access":
|
if cleaned_data.get("member_permissions") == "no_access":
|
||||||
cleaned_data["member_permission_member"] = None
|
cleaned_data["member_permissions"] = None
|
||||||
|
|
||||||
# Handle roles
|
# Handle roles
|
||||||
cleaned_data["roles"] = [role]
|
cleaned_data["roles"] = [role]
|
||||||
|
@ -258,7 +262,7 @@ class BasePortfolioMemberForm(forms.ModelForm):
|
||||||
"role": "organization_admin" or "organization_member",
|
"role": "organization_admin" or "organization_member",
|
||||||
"member_permission_admin": permission level if admin,
|
"member_permission_admin": permission level if admin,
|
||||||
"domain_request_permission_admin": permission level if admin,
|
"domain_request_permission_admin": permission level if admin,
|
||||||
"domain_request_permission_member": permission level if member
|
"domain_request_permissions": permission level if member
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
if self.initial is None:
|
if self.initial is None:
|
||||||
|
@ -296,9 +300,9 @@ class BasePortfolioMemberForm(forms.ModelForm):
|
||||||
selected_domain_permission = next((perm for perm in domain_perms if perm in perms), UserPortfolioPermissionChoices.VIEW_MANAGED_DOMAINS.value)
|
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_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_permission_member"] = selected_domain_request_permission
|
self.initial["domain_request_permissions"] = selected_domain_request_permission
|
||||||
self.initial["domain_permission_member"] = selected_domain_permission
|
self.initial["domain_permissions"] = selected_domain_permission
|
||||||
self.initial["member_permission_member"] = selected_member_permission
|
self.initial["member_permissions"] = selected_member_permission
|
||||||
|
|
||||||
|
|
||||||
class PortfolioMemberForm(BasePortfolioMemberForm):
|
class PortfolioMemberForm(BasePortfolioMemberForm):
|
||||||
|
@ -327,7 +331,7 @@ class PortfolioNewMemberForm(BasePortfolioMemberForm):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
email = forms.EmailField(
|
email = forms.EmailField(
|
||||||
label="Enter the email of the member you'd like to invite",
|
label="Email",
|
||||||
max_length=None,
|
max_length=None,
|
||||||
error_messages={
|
error_messages={
|
||||||
"invalid": ("Enter an email address in the required format, like name@example.com."),
|
"invalid": ("Enter an email address in the required format, like name@example.com."),
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
{% if field and field.field and field.field.descriptions %}
|
{% if field and field.field and field.field.descriptions %}
|
||||||
{% with description=field.field.descriptions|get_dict_value:option.value %}
|
{% with description=field.field.descriptions|get_dict_value:option.value %}
|
||||||
{% if description %}
|
{% if description %}
|
||||||
<p class="margin-0 margin-top-1">{{ description }}</p>
|
<p class="margin-0 margin-top-1 font-body-2xs">{{ description }}</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endwith %}
|
{% endwith %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -99,25 +99,19 @@
|
||||||
<h2>Basic member permissions</h2>
|
<h2>Basic member permissions</h2>
|
||||||
<p>Member permissions available for basic-level acccess.</p>
|
<p>Member permissions available for basic-level acccess.</p>
|
||||||
|
|
||||||
<h3 class="summary-item__title
|
<h3 class="margin-bottom-0">Domains</h3>
|
||||||
text-primary-dark
|
|
||||||
margin-bottom-0">Domains</h3>
|
|
||||||
{% with group_classes="usa-form-editable usa-form-editable--no-border bg-gray-1 padding-top-0" %}
|
{% with group_classes="usa-form-editable usa-form-editable--no-border bg-gray-1 padding-top-0" %}
|
||||||
{% input_with_errors form.domain_permission_member %}
|
{% input_with_errors form.domain_permissions %}
|
||||||
{% endwith %}
|
{% endwith %}
|
||||||
|
|
||||||
<h3 class="margin-bottom-0
|
<h3 class="margin-bottom-0">Domain requests</h3>
|
||||||
summary-item__title
|
|
||||||
text-primary-dark">Domain requests</h3>
|
|
||||||
{% with group_classes="usa-form-editable usa-form-editable--no-border bg-gray-1 padding-top-0" %}
|
{% with group_classes="usa-form-editable usa-form-editable--no-border bg-gray-1 padding-top-0" %}
|
||||||
{% input_with_errors form.domain_request_permission_member %}
|
{% input_with_errors form.domain_request_permissions %}
|
||||||
{% endwith %}
|
{% endwith %}
|
||||||
|
|
||||||
<h3 class="summary-item__title
|
<h3 class="margin-bottom-0">Organization members</h3>
|
||||||
text-primary-dark
|
|
||||||
margin-bottom-0">Organization members</h3>
|
|
||||||
{% with group_classes="usa-form-editable usa-form-editable--no-border bg-gray-1 padding-top-0" %}
|
{% with group_classes="usa-form-editable usa-form-editable--no-border bg-gray-1 padding-top-0" %}
|
||||||
{% input_with_errors form.member_permission_member %}
|
{% input_with_errors form.member_permissions %}
|
||||||
{% endwith %}
|
{% endwith %}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -30,90 +30,87 @@
|
||||||
</nav>
|
</nav>
|
||||||
|
|
||||||
<!-- Page header -->
|
<!-- Page header -->
|
||||||
{% block new_member_header %}
|
|
||||||
<h1>Add a new member</h1>
|
<h1>Add a new member</h1>
|
||||||
{% endblock new_member_header %}
|
|
||||||
|
<p>After adding a new member, an email invitation will be sent to that user with instructions on how to set up an account. All members must keep their contact information updated and be responsive if contacted by the .gov team.</p>
|
||||||
|
|
||||||
{% include "includes/required_fields.html" %}
|
{% include "includes/required_fields.html" %}
|
||||||
|
|
||||||
<form class="usa-form usa-form--large" method="post" id="add_member_form" novalidate>
|
<form class="usa-form usa-form--large" method="post" id="add_member_form" novalidate>
|
||||||
|
{% csrf_token %}
|
||||||
|
|
||||||
<fieldset class="usa-fieldset margin-top-2">
|
<fieldset class="usa-fieldset margin-top-2">
|
||||||
<legend>
|
<legend>
|
||||||
<h2>Email</h2>
|
<h2>Who would you like to add to the organization?</h2>
|
||||||
</legend>
|
</legend>
|
||||||
<!-- Member email -->
|
<!-- Member email -->
|
||||||
{% csrf_token %}
|
|
||||||
{% with group_classes="usa-form-editable usa-form-editable--no-border padding-top-0" %}
|
{% with group_classes="usa-form-editable usa-form-editable--no-border padding-top-0" %}
|
||||||
{% input_with_errors form.email %}
|
{% input_with_errors form.email %}
|
||||||
{% endwith %}
|
{% endwith %}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<!-- Member access radio buttons (Toggles other sections) -->
|
<!-- Member access radio buttons (Toggles other sections) -->
|
||||||
<fieldset class="usa-fieldset margin-top-2">
|
<fieldset class="usa-fieldset margin-top-2">
|
||||||
<legend>
|
<legend>
|
||||||
<h2>Member Access</h2>
|
<h2>What level of access would you like to grant this member?</h2>
|
||||||
</legend>
|
</legend>
|
||||||
|
|
||||||
<em>Select the level of access for this member. <abbr class="usa-hint usa-hint--required" title="required">*</abbr></em>
|
<p class="margin-y-0">Select one <abbr class="usa-hint usa-hint--required" title="required">*</abbr></p>
|
||||||
|
|
||||||
{% with add_class="usa-radio__input--tile" add_legend_class="usa-sr-only" %}
|
{% with add_class="usa-radio__input--tile" add_legend_class="usa-sr-only" %}
|
||||||
{% input_with_errors form.role %}
|
{% input_with_errors form.role %}
|
||||||
{% endwith %}
|
|
||||||
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<!-- Admin access form -->
|
|
||||||
<div id="new-member-admin-permissions" class="margin-top-2">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Basic access form -->
|
|
||||||
<div id="new-member-basic-permissions" class="margin-top-2">
|
|
||||||
<h2>Basic member permissions</h2>
|
|
||||||
<p>Member permissions available for basic-level acccess.</p>
|
|
||||||
|
|
||||||
<h3 class="summary-item__title
|
|
||||||
text-primary-dark
|
|
||||||
margin-bottom-0">Domains</h3>
|
|
||||||
{% with group_classes="usa-form-editable usa-form-editable--no-border bg-gray-1 padding-top-0" %}
|
|
||||||
{% input_with_errors form.domain_permission_member %}
|
|
||||||
{% endwith %}
|
{% endwith %}
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
<h3 class="margin-bottom-0
|
<!-- Admin access form -->
|
||||||
summary-item__title
|
<div id="new-member-admin-permissions" class="margin-top-2">
|
||||||
text-primary-dark">Domain requests</h3>
|
</div>
|
||||||
{% with group_classes="usa-form-editable usa-form-editable--no-border bg-gray-1 padding-top-0" %}
|
|
||||||
{% input_with_errors form.domain_request_permission_member %}
|
|
||||||
{% endwith %}
|
|
||||||
|
|
||||||
<h3 class="summary-item__title
|
<!-- Basic access form -->
|
||||||
text-primary-dark
|
<div id="new-member-basic-permissions" class="margin-top-2">
|
||||||
margin-bottom-0
|
<h2>What permissions do you want to add?</h2>
|
||||||
margin-top-3">Organization members</h3>
|
<p>Configure the permissions for this member. Basic members cannot manage member permissions or organization metadata.</p>
|
||||||
{% with group_classes="usa-form-editable usa-form-editable--no-border bg-gray-1 padding-top-0" %}
|
|
||||||
{% input_with_errors form.member_permission_member %}
|
<h3 class="margin-bottom-0">Domains <abbr class="usa-hint usa-hint--required" title="required">*</abbr></h3>
|
||||||
{% endwith %}
|
{% with group_classes="usa-form-editable bg-gray-1 border-top-0 margin-top-0 border-bottom padding-top-0" add_legend_class="usa-sr-only" %}
|
||||||
</div>
|
{% input_with_errors form.domain_permissions %}
|
||||||
|
{% endwith %}
|
||||||
|
|
||||||
|
<h3 class="margin-bottom-0">Domain requests <abbr class="usa-hint usa-hint--required" title="required">*</abbr></h3>
|
||||||
|
{% with group_classes="usa-form-editable usa-form-editable--no-border bg-gray-1 padding-top-0" add_legend_class="usa-sr-only" %}
|
||||||
|
{% input_with_errors form.domain_request_permissions %}
|
||||||
|
{% endwith %}
|
||||||
|
|
||||||
|
<h3 class="margin-bottom-0">Organization members <abbr class="usa-hint usa-hint--required" title="required">*</abbr></h3>
|
||||||
|
{% with group_classes="usa-form-editable usa-form-editable--no-border bg-gray-1 padding-top-0" add_legend_class="usa-sr-only" %}
|
||||||
|
{% input_with_errors form.member_permissions %}
|
||||||
|
{% endwith %}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h3 class="margin-bottom-1">Domain management</h3>
|
||||||
|
|
||||||
|
<p>After you invite this person to your organization, you can assign domain management permissions on their member profile.</p>
|
||||||
|
|
||||||
|
<!-- Submit/cancel buttons -->
|
||||||
|
<div class="margin-top-3">
|
||||||
|
<a
|
||||||
|
type="button"
|
||||||
|
href="{% url 'members' %}"
|
||||||
|
class="usa-button usa-button--outline"
|
||||||
|
name="btn-cancel-click"
|
||||||
|
aria-label="Cancel adding new member"
|
||||||
|
>Cancel
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
id="invite_member_trigger"
|
||||||
|
href="#invite-member-modal"
|
||||||
|
class="usa-button usa-button--outline margin-top-1 display-none"
|
||||||
|
aria-controls="invite-member-modal"
|
||||||
|
data-open-modal
|
||||||
|
>Trigger invite member modal</a>
|
||||||
|
<button id="invite_new_member_submit" type="submit" class="usa-button">Invite Member</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- Submit/cancel buttons -->
|
|
||||||
<div class="margin-top-3">
|
|
||||||
<a
|
|
||||||
type="button"
|
|
||||||
href="{% url 'members' %}"
|
|
||||||
class="usa-button usa-button--outline"
|
|
||||||
name="btn-cancel-click"
|
|
||||||
aria-label="Cancel adding new member"
|
|
||||||
>Cancel
|
|
||||||
</a>
|
|
||||||
<a
|
|
||||||
id="invite_member_trigger"
|
|
||||||
href="#invite-member-modal"
|
|
||||||
class="usa-button usa-button--outline margin-top-1 display-none"
|
|
||||||
aria-controls="invite-member-modal"
|
|
||||||
data-open-modal
|
|
||||||
>Trigger invite member modal</a>
|
|
||||||
<button id="invite_new_member_submit" type="submit" class="usa-button">Invite Member</button>
|
|
||||||
</div>
|
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue