mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-07-25 03:58:39 +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',
|
method: 'POST',
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/x-www-form-urlencoded',
|
'Content-Type': 'application/x-www-form-urlencoded',
|
||||||
|
'X-Requested-With': 'XMLHttpRequest',
|
||||||
'X-CSRFToken': csrfToken,
|
'X-CSRFToken': csrfToken,
|
||||||
},
|
},
|
||||||
body: formData
|
body: formData
|
||||||
|
@ -1200,7 +1201,7 @@ function initializeTooltips() {
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
function initializeModals() {
|
function initializeModals() {
|
||||||
window.modal.on();
|
window.modal.on();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -3030,7 +3031,7 @@ document.addEventListener("DOMContentLoaded", () => {
|
||||||
});
|
});
|
||||||
console.log("AFTER LISTENER")
|
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();
|
initializeModals();
|
||||||
|
|
||||||
|
@ -3041,15 +3042,11 @@ document.addEventListener("DOMContentLoaded", () => {
|
||||||
const submitButton = modal.querySelector('.usa-modal__submit');
|
const submitButton = modal.querySelector('.usa-modal__submit');
|
||||||
const closeButton = modal.querySelector('.usa-modal__close');
|
const closeButton = modal.querySelector('.usa-modal__close');
|
||||||
submitButton.addEventListener('click', () => {
|
submitButton.addEventListener('click', () => {
|
||||||
let pk = submitButton.getAttribute('data-pk');
|
|
||||||
closeButton.click();
|
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 delete_member_form = document.getElementById("member-delete-form");
|
||||||
let pageToDisplay = data.page;
|
if (delete_member_form) {
|
||||||
if (data.total == 1 && data.unfiltered_total > 1) {
|
delete_member_form.submit();
|
||||||
pageToDisplay--;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
deleteMember(pk, pageToDisplay);
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,6 +60,7 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<form method="post" id="member-delete-form" action="{{ request.path }}/delete"> {% csrf_token %} </form>
|
||||||
<address>
|
<address>
|
||||||
<strong class="text-primary-dark">Last active:</strong>
|
<strong class="text-primary-dark">Last active:</strong>
|
||||||
{% if member and member.last_login %}
|
{% if member and member.last_login %}
|
||||||
|
|
|
@ -2,6 +2,7 @@ import logging
|
||||||
from django.http import HttpResponse, Http404, JsonResponse
|
from django.http import HttpResponse, Http404, JsonResponse
|
||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
|
from django.utils.safestring import mark_safe
|
||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
|
|
||||||
from registrar.forms.portfolio import (
|
from registrar.forms.portfolio import (
|
||||||
|
@ -114,29 +115,42 @@ class PortfolioMemberDeleteView(PortfolioMemberPermission, View):
|
||||||
|
|
||||||
support_url = "https://get.gov/contact/"
|
support_url = "https://get.gov/contact/"
|
||||||
|
|
||||||
# If they have any in progress requests
|
error_message = ''
|
||||||
|
|
||||||
if active_requests_count > 0:
|
if active_requests_count > 0:
|
||||||
return JsonResponse(
|
# If they have any in progress requests
|
||||||
{
|
error_message = mark_safe(
|
||||||
"error": f"This member has an active domain request and can't be removed from the organization. "
|
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."
|
f"<a href='{support_url}' target='_blank'>Contact the .gov team</a> to remove them."
|
||||||
},
|
)
|
||||||
status=400,
|
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 error_message:
|
||||||
if member.is_only_admin_of_portfolio(portfolio_member_permission.portfolio):
|
if request.headers.get("X-Requested-With") == "XMLHttpRequest":
|
||||||
return JsonResponse(
|
return JsonResponse(
|
||||||
{
|
{
|
||||||
"error": "There must be at least one admin in your organization. Give another member admin \n"
|
"error": error_message
|
||||||
"persmissions, make sure they log into the registrar, and then remove this member."
|
},
|
||||||
},
|
status=400,
|
||||||
status=400,
|
)
|
||||||
)
|
else:
|
||||||
|
messages.error(request, error_message)
|
||||||
|
return redirect(reverse('member', kwargs={'pk': pk}))
|
||||||
|
|
||||||
|
# passed all error conditions
|
||||||
portfolio_member_permission.delete()
|
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):
|
class PortfolioMemberEditView(PortfolioMemberEditPermissionView, View):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue