This commit is contained in:
David Kennedy 2024-10-29 14:18:47 -04:00
parent 8586bbf13f
commit c05a4237cf
No known key found for this signature in database
GPG key ID: 6528A5386E66B96B
3 changed files with 38 additions and 26 deletions

View file

@ -239,6 +239,7 @@ function deleteMember(member_delete_url, pageToDisplay) {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'X-Requested-With': 'XMLHttpRequest',
'X-CSRFToken': csrfToken,
},
body: formData
@ -1200,7 +1201,7 @@ function initializeTooltips() {
*
*/
function initializeModals() {
window.modal.on();
window.modal.on();
}
/**
@ -3030,7 +3031,7 @@ document.addEventListener("DOMContentLoaded", () => {
});
console.log("AFTER LISTENER")
addModal(member_email, member_id, num_domains, member_delete_url, wrapperDeleteAction);
addModal(member_email, unique_id, num_domains, member_delete_url, wrapperDeleteAction);
initializeModals();
@ -3041,15 +3042,11 @@ document.addEventListener("DOMContentLoaded", () => {
const submitButton = modal.querySelector('.usa-modal__submit');
const closeButton = modal.querySelector('.usa-modal__close');
submitButton.addEventListener('click', () => {
let pk = submitButton.getAttribute('data-pk');
closeButton.click();
// If we're deleting the last item on a page that is not page 1, we'll need to refresh the display to the previous page
let pageToDisplay = data.page;
if (data.total == 1 && data.unfiltered_total > 1) {
pageToDisplay--;
let delete_member_form = document.getElementById("member-delete-form");
if (delete_member_form) {
delete_member_form.submit();
}
deleteMember(pk, pageToDisplay);
});
});
}

View file

@ -60,6 +60,7 @@
{% endif %}
</div>
<form method="post" id="member-delete-form" action="{{ request.path }}/delete"> {% csrf_token %} </form>
<address>
<strong class="text-primary-dark">Last active:</strong>
{% if member and member.last_login %}

View file

@ -2,6 +2,7 @@ import logging
from django.http import HttpResponse, Http404, JsonResponse
from django.shortcuts import render
from django.urls import reverse
from django.utils.safestring import mark_safe
from django.contrib import messages
from registrar.forms.portfolio import (
@ -114,29 +115,42 @@ class PortfolioMemberDeleteView(PortfolioMemberPermission, View):
support_url = "https://get.gov/contact/"
# If they have any in progress requests
error_message = ''
if active_requests_count > 0:
return JsonResponse(
{
"error": f"This member has an active domain request and can't be removed from the organization. "
f"<a href='{support_url}' target='_blank'>Contact the .gov team</a> to remove them."
},
status=400,
# If they have any in progress requests
error_message = mark_safe(
f"This member has an active domain request and can't be removed from the organization. "
f"<a href='{support_url}' target='_blank'>Contact the .gov team</a> to remove them."
)
elif member.is_only_admin_of_portfolio(portfolio_member_permission.portfolio):
# If they are the last manager of a domain
error_message = (
"There must be at least one admin in your organization. Give another member admin "
"permissions, make sure they log into the registrar, and then remove this member."
)
# If they are the last manager of a domain
if member.is_only_admin_of_portfolio(portfolio_member_permission.portfolio):
return JsonResponse(
{
"error": "There must be at least one admin in your organization. Give another member admin \n"
"persmissions, make sure they log into the registrar, and then remove this member."
},
status=400,
)
if error_message:
if request.headers.get("X-Requested-With") == "XMLHttpRequest":
return JsonResponse(
{
"error": error_message
},
status=400,
)
else:
messages.error(request, error_message)
return redirect(reverse('member', kwargs={'pk': pk}))
# passed all error conditions
portfolio_member_permission.delete()
return JsonResponse({"success": f"You've removed {member.email} from the organization."}, status=200)
success_message = f"You've removed {member.email} from the organization."
if request.headers.get("X-Requested-With") == "XMLHttpRequest":
return JsonResponse({"success": success_message}, status=200)
else:
messages.success(request, success_message)
return redirect(reverse('members'))
class PortfolioMemberEditView(PortfolioMemberEditPermissionView, View):