mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-07-28 21:46:33 +02:00
Add stub for email adding
This commit is contained in:
parent
d7ec32d898
commit
f6e95cc4f8
5 changed files with 27 additions and 22 deletions
|
@ -39,4 +39,4 @@ initPortfolioNewMemberPageToggle();
|
||||||
initAddNewMemberPageListeners();
|
initAddNewMemberPageListeners();
|
||||||
|
|
||||||
// Init all other portfolio member pages
|
// Init all other portfolio member pages
|
||||||
initPortfolioMemberPage();
|
initPortfolioMemberPage();
|
||||||
|
|
|
@ -57,10 +57,10 @@ export function initAddNewMemberPageListeners() {
|
||||||
}
|
}
|
||||||
// Hookup the radio elements
|
// Hookup the radio elements
|
||||||
hookupRadioTogglerListener(
|
hookupRadioTogglerListener(
|
||||||
'member_access_level',
|
'role',
|
||||||
{
|
{
|
||||||
'admin': 'new-member-admin-permissions',
|
'organization_admin': 'new-member-admin-permissions',
|
||||||
'basic': 'new-member-basic-permissions'
|
'organization_basic': 'new-member-basic-permissions'
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -115,6 +115,8 @@ export function initAddNewMemberPageListeners() {
|
||||||
|
|
||||||
// Get all permission sections (divs with h3 and radio inputs)
|
// Get all permission sections (divs with h3 and radio inputs)
|
||||||
const permissionSections = document.querySelectorAll(`#${permission_details_div_id} > h3`);
|
const permissionSections = document.querySelectorAll(`#${permission_details_div_id} > h3`);
|
||||||
|
console.log(`what is the id? ${permission_details_div_id}`)
|
||||||
|
console.log(`what is the permissionSections? ${permissionSections}`)
|
||||||
|
|
||||||
permissionSections.forEach(section => {
|
permissionSections.forEach(section => {
|
||||||
// Find the <h3> element text
|
// Find the <h3> element text
|
||||||
|
@ -122,17 +124,18 @@ export function initAddNewMemberPageListeners() {
|
||||||
|
|
||||||
// Find the associated radio buttons container (next fieldset)
|
// Find the associated radio buttons container (next fieldset)
|
||||||
const fieldset = section.nextElementSibling;
|
const fieldset = section.nextElementSibling;
|
||||||
|
console.log(`what is the fieldset? ${fieldset}`)
|
||||||
if (fieldset && fieldset.tagName.toLowerCase() === 'fieldset') {
|
if (fieldset && fieldset.tagName.toLowerCase() === 'fieldset') {
|
||||||
// Get the selected radio button within this fieldset
|
// Get the selected radio button within this fieldset
|
||||||
const selectedRadio = fieldset.querySelector('input[type="radio"]:checked');
|
const selectedRadio = fieldset.querySelector('input[type="radio"]:checked');
|
||||||
|
console.log(`what is the selectedRadio? ${selectedRadio}`)
|
||||||
// If a radio button is selected, get its label text
|
// If a radio button is selected, get its label text
|
||||||
let selectedPermission = "No permission selected";
|
let selectedPermission = "No permission selected";
|
||||||
if (selectedRadio) {
|
if (selectedRadio) {
|
||||||
const label = fieldset.querySelector(`label[for="${selectedRadio.id}"]`);
|
const label = fieldset.querySelector(`label[for="${selectedRadio.id}"]`);
|
||||||
selectedPermission = label ? label.textContent : "No permission selected";
|
selectedPermission = label ? label.textContent : "No permission selected";
|
||||||
}
|
}
|
||||||
|
console.log(`what is the selectedPermission? ${selectedPermission}`)
|
||||||
|
|
||||||
// Create new elements for the modal content
|
// Create new elements for the modal content
|
||||||
const titleElement = document.createElement("h4");
|
const titleElement = document.createElement("h4");
|
||||||
|
@ -198,4 +201,4 @@ export function initPortfolioMemberPage() {
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -364,16 +364,14 @@ class NewMemberForm(BasePortfolioMemberForm):
|
||||||
cleaned_data["email"] = email_value.lower()
|
cleaned_data["email"] = email_value.lower()
|
||||||
|
|
||||||
if email_value:
|
if email_value:
|
||||||
# Check if user exists
|
|
||||||
requested_user = User.objects.filter(email=email_value, email__isnull=False).first()
|
|
||||||
if not requested_user:
|
|
||||||
raise forms.ValidationError("User does not exist.")
|
|
||||||
|
|
||||||
# Check if user is already a member
|
# Check if user is already a member
|
||||||
if UserPortfolioPermission.objects.filter(user=requested_user, portfolio=self.portfolio).exists():
|
if UserPortfolioPermission.objects.filter(user__email=email_value, portfolio=self.portfolio).exists():
|
||||||
raise forms.ValidationError("User is already a member of this portfolio.")
|
self.add_error("email", "User is already a member of this portfolio.")
|
||||||
|
|
||||||
|
if PortfolioInvitation.objects.filter(email=email_value, portfolio=self.portfolio).exists():
|
||||||
|
self.add_error("email", "An invitation already exists for this user.")
|
||||||
##########################################
|
##########################################
|
||||||
# TODO: future ticket
|
# TODO: #3019
|
||||||
# (invite new member)
|
# (invite new member)
|
||||||
##########################################
|
##########################################
|
||||||
# Check for an existing user (if there isn't any, send an invite)
|
# Check for an existing user (if there isn't any, send an invite)
|
||||||
|
|
|
@ -89,7 +89,7 @@
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<!-- Admin access form -->
|
<!-- Admin access form -->
|
||||||
<div id="member-admin-permissions" class="margin-top-2">
|
<div id="new-member-admin-permissions" class="margin-top-2">
|
||||||
<h2>Admin access permissions</h2>
|
<h2>Admin access permissions</h2>
|
||||||
<p>Member permissions available for admin-level acccess.</p>
|
<p>Member permissions available for admin-level acccess.</p>
|
||||||
|
|
||||||
|
@ -110,7 +110,7 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Basic access form -->
|
<!-- Basic access form -->
|
||||||
<div id="member-basic-permissions" class="margin-top-2">
|
<div id="new-member-basic-permissions" class="margin-top-2">
|
||||||
<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>
|
||||||
|
|
||||||
|
|
|
@ -493,10 +493,11 @@ class NewMemberView(PortfolioInvitationCreatePermissionView):
|
||||||
"""Create portfolio invitation from form data."""
|
"""Create portfolio invitation from form data."""
|
||||||
if self.is_ajax():
|
if self.is_ajax():
|
||||||
return JsonResponse({"is_valid": True})
|
return JsonResponse({"is_valid": True})
|
||||||
|
|
||||||
requested_email = form.cleaned_data.get("email")
|
# TODO: #3019
|
||||||
messages.success(self.request, f"{requested_email} has been invited.")
|
# requested_email = form.cleaned_data.get("email")
|
||||||
|
# self.send_portfolio_invitation_email(requested_email)
|
||||||
|
|
||||||
# Create instance using form's mapping method
|
# Create instance using form's mapping method
|
||||||
self.object = form.map_cleaned_data_to_instance(
|
self.object = form.map_cleaned_data_to_instance(
|
||||||
form.cleaned_data,
|
form.cleaned_data,
|
||||||
|
@ -506,10 +507,13 @@ class NewMemberView(PortfolioInvitationCreatePermissionView):
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
self.object.save()
|
self.object.save()
|
||||||
|
|
||||||
messages.success(self.request, f"{self.object.email} has been invited.")
|
messages.success(self.request, f"{self.object.email} has been invited.")
|
||||||
return redirect(self.get_success_url())
|
return redirect(self.get_success_url())
|
||||||
|
|
||||||
|
# TODO: #3019
|
||||||
|
# def send_portfolio_invitation_email(self, email):
|
||||||
|
# pass
|
||||||
|
|
||||||
def form_invalid(self, form):
|
def form_invalid(self, form):
|
||||||
if self.is_ajax():
|
if self.is_ajax():
|
||||||
return JsonResponse({"is_valid": False})
|
return JsonResponse({"is_valid": False})
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue