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
|
@ -57,10 +57,10 @@ export function initAddNewMemberPageListeners() {
|
|||
}
|
||||
// Hookup the radio elements
|
||||
hookupRadioTogglerListener(
|
||||
'member_access_level',
|
||||
'role',
|
||||
{
|
||||
'admin': 'new-member-admin-permissions',
|
||||
'basic': 'new-member-basic-permissions'
|
||||
'organization_admin': 'new-member-admin-permissions',
|
||||
'organization_basic': 'new-member-basic-permissions'
|
||||
}
|
||||
);
|
||||
|
||||
|
@ -115,6 +115,8 @@ export function initAddNewMemberPageListeners() {
|
|||
|
||||
// Get all permission sections (divs with h3 and radio inputs)
|
||||
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 => {
|
||||
// Find the <h3> element text
|
||||
|
@ -122,17 +124,18 @@ export function initAddNewMemberPageListeners() {
|
|||
|
||||
// Find the associated radio buttons container (next fieldset)
|
||||
const fieldset = section.nextElementSibling;
|
||||
|
||||
console.log(`what is the fieldset? ${fieldset}`)
|
||||
if (fieldset && fieldset.tagName.toLowerCase() === 'fieldset') {
|
||||
// Get the selected radio button within this fieldset
|
||||
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
|
||||
let selectedPermission = "No permission selected";
|
||||
if (selectedRadio) {
|
||||
const label = fieldset.querySelector(`label[for="${selectedRadio.id}"]`);
|
||||
selectedPermission = label ? label.textContent : "No permission selected";
|
||||
}
|
||||
console.log(`what is the selectedPermission? ${selectedPermission}`)
|
||||
|
||||
// Create new elements for the modal content
|
||||
const titleElement = document.createElement("h4");
|
||||
|
|
|
@ -364,16 +364,14 @@ class NewMemberForm(BasePortfolioMemberForm):
|
|||
cleaned_data["email"] = email_value.lower()
|
||||
|
||||
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
|
||||
if UserPortfolioPermission.objects.filter(user=requested_user, portfolio=self.portfolio).exists():
|
||||
raise forms.ValidationError("User is already a member of this portfolio.")
|
||||
if UserPortfolioPermission.objects.filter(user__email=email_value, portfolio=self.portfolio).exists():
|
||||
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)
|
||||
##########################################
|
||||
# Check for an existing user (if there isn't any, send an invite)
|
||||
|
|
|
@ -89,7 +89,7 @@
|
|||
</fieldset>
|
||||
|
||||
<!-- 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>
|
||||
<p>Member permissions available for admin-level acccess.</p>
|
||||
|
||||
|
@ -110,7 +110,7 @@
|
|||
</div>
|
||||
|
||||
<!-- 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>
|
||||
<p>Member permissions available for basic-level acccess.</p>
|
||||
|
||||
|
|
|
@ -494,8 +494,9 @@ class NewMemberView(PortfolioInvitationCreatePermissionView):
|
|||
if self.is_ajax():
|
||||
return JsonResponse({"is_valid": True})
|
||||
|
||||
requested_email = form.cleaned_data.get("email")
|
||||
messages.success(self.request, f"{requested_email} has been invited.")
|
||||
# TODO: #3019
|
||||
# requested_email = form.cleaned_data.get("email")
|
||||
# self.send_portfolio_invitation_email(requested_email)
|
||||
|
||||
# Create instance using form's mapping method
|
||||
self.object = form.map_cleaned_data_to_instance(
|
||||
|
@ -506,10 +507,13 @@ class NewMemberView(PortfolioInvitationCreatePermissionView):
|
|||
)
|
||||
)
|
||||
self.object.save()
|
||||
|
||||
messages.success(self.request, f"{self.object.email} has been invited.")
|
||||
return redirect(self.get_success_url())
|
||||
|
||||
# TODO: #3019
|
||||
# def send_portfolio_invitation_email(self, email):
|
||||
# pass
|
||||
|
||||
def form_invalid(self, form):
|
||||
if self.is_ajax():
|
||||
return JsonResponse({"is_valid": False})
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue