minimal delete views for member and invitedmember

This commit is contained in:
David Kennedy 2024-10-24 16:27:40 -04:00
parent 982e8d08f7
commit 5f6e8968c7
No known key found for this signature in database
GPG key ID: 6528A5386E66B96B
3 changed files with 28 additions and 16 deletions

View file

@ -2197,21 +2197,21 @@ class MembersTable extends LoadTableBase {
*/ */
deleteMember(member_delete_url, pageToDisplay) { deleteMember(member_delete_url, pageToDisplay) {
// Use to debug uswds modal issues // Use to debug uswds modal issues
//console.log('deleteDomainRequest') console.log(member_delete_url)
// Get csrf token // Get csrf token
const csrfToken = getCsrfToken(); const csrfToken = getCsrfToken();
// Create FormData object and append the CSRF token // Create FormData object and append the CSRF token
const formData = `csrfmiddlewaretoken=${encodeURIComponent(csrfToken)}&delete-member=`; const formData = `csrfmiddlewaretoken=${encodeURIComponent(csrfToken)}`;
fetch(`${member_delete_url}`, { fetch(`${member_delete_url}`, {
method: 'DELETE', method: 'POST',
headers: { headers: {
'Content-Type': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded',
'X-CSRFToken': csrfToken, 'X-CSRFToken': csrfToken,
}, },
credentials: 'same-origin' body: formData
// body: formData
}) })
.then(response => { .then(response => {
if (!response.ok) { if (!response.ok) {
@ -2325,10 +2325,8 @@ class MembersTable extends LoadTableBase {
} }
data.members.forEach(member => { data.members.forEach(member => {
const member_source = member.source === "permissions" ? "member" : "invitedmember"; const member_id = member.source + member.id;
const member_id = member_source + member.id; const submit_delete_url = member.action_url + "/delete";
// member_id is actually the permission_id
const submit_delete_url = `/${member_source}/${member.id}`
const member_name = member.name; const member_name = member.name;
const member_display = member.member_display; const member_display = member.member_display;
const member_permissions = member.permissions; const member_permissions = member.permissions;
@ -2429,7 +2427,7 @@ class MembersTable extends LoadTableBase {
// Pass member_delete_url in to delete // Pass member_delete_url in to delete
// TODO: Use the PK to call a separate function that triggers a new backend AJAX call // TODO: Use the PK to call a separate function that triggers a new backend AJAX call
// to delete their UserDomainRoles only for this portfolio + remove their UserPortfolioPermissions // to delete their UserDomainRoles only for this portfolio + remove their UserPortfolioPermissions
alert('modal submit') //alert('modal submit')
}); });
}); });

View file

@ -91,6 +91,11 @@ urlpatterns = [
views.PortfolioMemberView.as_view(), views.PortfolioMemberView.as_view(),
name="member", name="member",
), ),
path(
"member/<int:pk>/delete",
views.PortfolioMemberDeleteView.as_view(),
name="member-delete",
),
path( path(
"member/<int:pk>/permissions", "member/<int:pk>/permissions",
views.PortfolioMemberEditView.as_view(), views.PortfolioMemberEditView.as_view(),
@ -101,6 +106,11 @@ urlpatterns = [
views.PortfolioInvitedMemberView.as_view(), views.PortfolioInvitedMemberView.as_view(),
name="invitedmember", name="invitedmember",
), ),
path(
"invitedmember/<int:pk>/delete",
views.PortfolioInvitedMemberDeleteView.as_view(),
name="invitedmember-delete",
),
path( path(
"invitedmember/<int:pk>/permissions", "invitedmember/<int:pk>/permissions",
views.PortfolioInvitedMemberEditView.as_view(), views.PortfolioInvitedMemberEditView.as_view(),

View file

@ -15,6 +15,7 @@ from registrar.models import Portfolio, User
from registrar.models.portfolio_invitation import PortfolioInvitation from registrar.models.portfolio_invitation import PortfolioInvitation
from registrar.models.user_portfolio_permission import UserPortfolioPermission from registrar.models.user_portfolio_permission import UserPortfolioPermission
from registrar.models.utility.portfolio_helper import UserPortfolioPermissionChoices, UserPortfolioRoleChoices from registrar.models.utility.portfolio_helper import UserPortfolioPermissionChoices, UserPortfolioRoleChoices
from registrar.views.utility.mixins import PortfolioInvitedMemberPermission, PortfolioMemberPermission
from registrar.views.utility.permission_views import ( from registrar.views.utility.permission_views import (
PortfolioDomainRequestsPermissionView, PortfolioDomainRequestsPermissionView,
PortfolioDomainsPermissionView, PortfolioDomainsPermissionView,
@ -99,8 +100,9 @@ class PortfolioMemberView(PortfolioMemberPermissionView, View):
}, },
) )
@csrf_exempt class PortfolioMemberDeleteView(PortfolioMemberPermission, View):
def delete(self, request, pk):
def post(self, request, pk):
""" """
Find and delete the portfolio member using the provided primary key (pk). Find and delete the portfolio member using the provided primary key (pk).
Redirect to a success page after deletion (or any other appropriate page). Redirect to a success page after deletion (or any other appropriate page).
@ -188,10 +190,12 @@ class PortfolioInvitedMemberView(PortfolioInvitedMemberPermissionView, View):
}, },
) )
@csrf_exempt
def delete(self, request, pk): class PortfolioInvitedMemberDeleteView(PortfolioInvitedMemberPermission, View):
def post(self, request, pk):
""" """
Find and delete the portfolio invitation using the provided primary key (pk). Find and delete the portfolio invited member using the provided primary key (pk).
Redirect to a success page after deletion (or any other appropriate page). Redirect to a success page after deletion (or any other appropriate page).
""" """
portfolio_invitation = get_object_or_404(PortfolioInvitation, pk=pk) portfolio_invitation = get_object_or_404(PortfolioInvitation, pk=pk)