mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-07-23 19:20:47 +02:00
wip
This commit is contained in:
parent
8586bbf13f
commit
c05a4237cf
3 changed files with 38 additions and 26 deletions
|
@ -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);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
|
|
@ -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 %}
|
||||
|
|
|
@ -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):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue