UI - МЕЖПРОЕКТНАЯ КОММУНИКАЦИЯ: корректный flow уведомлений Tasker
This commit is contained in:
@@ -37,7 +37,7 @@ from plane.app.serializers import (
|
||||
from plane.app.views.base import BaseAPIView
|
||||
from plane.bgtasks.event_tracking_task import track_event
|
||||
from plane.bgtasks.workspace_invitation_task import workspace_invitation
|
||||
from plane.db.models import User, Workspace, WorkspaceMember, WorkspaceMemberInvite
|
||||
from plane.db.models import Notification, User, Workspace, WorkspaceMember, WorkspaceMemberInvite
|
||||
from plane.utils.cache import invalidate_cache, invalidate_cache_directly
|
||||
from plane.utils.host import base_host
|
||||
from plane.utils.analytics_events import USER_JOINED_WORKSPACE, USER_INVITED_TO_WORKSPACE
|
||||
@@ -314,6 +314,31 @@ class WorkspaceJoinEndpoint(BaseAPIView):
|
||||
"joined_at": str(timezone.now()),
|
||||
},
|
||||
)
|
||||
if workspace_invite.created_by_id and workspace_invite.created_by_id != user.id:
|
||||
Notification.objects.create(
|
||||
workspace=workspace_invite.workspace,
|
||||
sender="in_app:nodedc:workspace_invite_accepted",
|
||||
triggered_by=user,
|
||||
receiver_id=workspace_invite.created_by_id,
|
||||
entity_identifier=workspace_invite.workspace_id,
|
||||
entity_name="workspace_invite_accepted",
|
||||
title=f"{user.display_name or user.email} принял приглашение",
|
||||
message=(
|
||||
f"{user.display_name or user.email} присоединился к workspace "
|
||||
f"{workspace_invite.workspace.name}."
|
||||
),
|
||||
message_stripped=(
|
||||
f"{user.display_name or user.email} присоединился к workspace "
|
||||
f"{workspace_invite.workspace.name}."
|
||||
),
|
||||
data={
|
||||
"notification_type": "workspace_invite_accepted",
|
||||
"target_url": f"/{workspace_invite.workspace.slug}/settings/members",
|
||||
"workspace_slug": workspace_invite.workspace.slug,
|
||||
"workspace_name": workspace_invite.workspace.name,
|
||||
"invitee_email": user.email,
|
||||
},
|
||||
)
|
||||
|
||||
# Delete the invitation
|
||||
workspace_invite.delete()
|
||||
@@ -358,6 +383,7 @@ class UserWorkspaceInvitationsViewSet(BaseViewSet):
|
||||
).order_by("-created_at")
|
||||
|
||||
# If the user is already a member of workspace and was deactivated then activate the user
|
||||
accepted_notifications = []
|
||||
for invitation in workspace_invitations:
|
||||
workspace_member = WorkspaceMember.objects.filter(
|
||||
workspace_id=invitation.workspace_id, member=request.user
|
||||
@@ -394,6 +420,33 @@ class UserWorkspaceInvitationsViewSet(BaseViewSet):
|
||||
"joined_at": str(timezone.now()),
|
||||
},
|
||||
)
|
||||
if invitation.created_by_id and invitation.created_by_id != request.user.id:
|
||||
accepted_notifications.append(
|
||||
Notification(
|
||||
workspace=invitation.workspace,
|
||||
sender="in_app:nodedc:workspace_invite_accepted",
|
||||
triggered_by=request.user,
|
||||
receiver_id=invitation.created_by_id,
|
||||
entity_identifier=invitation.workspace_id,
|
||||
entity_name="workspace_invite_accepted",
|
||||
title=f"{request.user.display_name or request.user.email} принял приглашение",
|
||||
message=(
|
||||
f"{request.user.display_name or request.user.email} присоединился к workspace "
|
||||
f"{invitation.workspace.name}."
|
||||
),
|
||||
message_stripped=(
|
||||
f"{request.user.display_name or request.user.email} присоединился к workspace "
|
||||
f"{invitation.workspace.name}."
|
||||
),
|
||||
data={
|
||||
"notification_type": "workspace_invite_accepted",
|
||||
"target_url": f"/{invitation.workspace.slug}/settings/members",
|
||||
"workspace_slug": invitation.workspace.slug,
|
||||
"workspace_name": invitation.workspace.name,
|
||||
"invitee_email": request.user.email,
|
||||
},
|
||||
)
|
||||
)
|
||||
|
||||
# Bulk create the user for all the workspaces
|
||||
WorkspaceMember.objects.bulk_create(
|
||||
@@ -408,6 +461,7 @@ class UserWorkspaceInvitationsViewSet(BaseViewSet):
|
||||
],
|
||||
ignore_conflicts=True,
|
||||
)
|
||||
Notification.objects.bulk_create(accepted_notifications, batch_size=10)
|
||||
|
||||
# Delete joined workspace invites
|
||||
workspace_invitations.delete()
|
||||
|
||||
Reference in New Issue
Block a user