fix: project member delete when deleting user from workspace (#1123)

* fix: project member delete when deleting user from workspace

* fix: workspace and project member delete
This commit is contained in:
pablohashescobar 2023-05-25 12:25:15 +05:30 committed by GitHub
parent e608b58e70
commit af2d7d6f75
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 83 additions and 10 deletions

View file

@ -37,18 +37,19 @@ from plane.db.models import (
State,
TeamMember,
ProjectFavorite,
ProjectIdentifier,
Module,
Cycle,
CycleFavorite,
ModuleFavorite,
PageFavorite,
IssueViewFavorite,
Page,
IssueAssignee,
ModuleMember
)
from plane.db.models import (
Project,
ProjectMember,
Workspace,
ProjectMemberInvite,
User,
ProjectIdentifier,
Cycle,
Module,
)
from plane.bgtasks.project_invitation_task import project_invitation
@ -443,6 +444,33 @@ class ProjectMemberViewSet(BaseViewSet):
capture_exception(e)
return Response({"error": "Something went wrong please try again later"}, status=status.HTTP_400_BAD_REQUEST)
def destroy(self, request, slug, project_id, pk):
try:
project_member = ProjectMember.objects.get(
workspace__slug=slug, project_id=project_id, pk=pk
)
# Remove all favorites
ProjectFavorite.objects.filter(workspace__slug=slug, project_id=project_id, user=project_member.member).delete()
CycleFavorite.objects.filter(workspace__slug=slug, project_id=project_id, user=project_member.member).delete()
ModuleFavorite.objects.filter(workspace__slug=slug, project_id=project_id, user=project_member.member).delete()
PageFavorite.objects.filter(workspace__slug=slug, project_id=project_id, user=project_member.member).delete()
IssueViewFavorite.objects.filter(workspace__slug=slug, project_id=project_id, user=project_member.member).delete()
# Also remove issue from issue assigned
IssueAssignee.objects.filter(
workspace__slug=slug, project_id=project_id, assignee=project_member.member
).delete()
# Remove if module member
ModuleMember.objects.filter(workspace__slug=slug, project_id=project_id, member=project_member.member).delete()
# Delete owned Pages
Page.objects.filter(workspace__slug=slug, project_id=project_id, owned_by=project_member.member).delete()
project_member.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
except ProjectMember.DoesNotExist:
return Response({"error": "Project Member does not exist"}, status=status.HTTP_400)
except Exception as e:
capture_exception(e)
return Response({"error": "Something went wrong please try again later"})
class AddMemberToProjectEndpoint(BaseAPIView):