ФУНКЦИИ - МЕЖПРОЕКТНАЯ КОММУНИКАЦИЯ: realtime канал карточек задач
This commit is contained in:
@@ -33,6 +33,7 @@ from rest_framework.response import Response
|
||||
|
||||
# Module imports
|
||||
from plane.app.permissions import ROLE, allow_permission
|
||||
from plane.app.realtime.issue_events import publish_issue_event_on_commit
|
||||
from plane.app.serializers import (
|
||||
IssueCreateSerializer,
|
||||
IssueDetailSerializer,
|
||||
@@ -429,7 +430,7 @@ class IssueViewSet(BaseViewSet):
|
||||
)
|
||||
|
||||
if serializer.is_valid():
|
||||
serializer.save()
|
||||
issue_instance = serializer.save()
|
||||
|
||||
# Track the issue
|
||||
issue_activity.delay(
|
||||
@@ -502,6 +503,12 @@ class IssueViewSet(BaseViewSet):
|
||||
user_id=request.user.id,
|
||||
is_creating=True,
|
||||
)
|
||||
publish_issue_event_on_commit(
|
||||
"issue.created",
|
||||
issue_instance,
|
||||
actor_id=request.user.id,
|
||||
changed_fields=request.data.keys(),
|
||||
)
|
||||
return Response(issue, status=status.HTTP_201_CREATED)
|
||||
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
@@ -695,7 +702,7 @@ class IssueViewSet(BaseViewSet):
|
||||
requested_data = json.dumps(self.request.data, cls=DjangoJSONEncoder)
|
||||
serializer = IssueCreateSerializer(issue, data=request.data, partial=True, context={"project_id": project_id})
|
||||
if serializer.is_valid():
|
||||
serializer.save()
|
||||
updated_issue = serializer.save()
|
||||
# Check if the update is a migration description update
|
||||
is_migration_description_update = skip_activity and is_description_update
|
||||
# Log all the updates
|
||||
@@ -726,12 +733,18 @@ class IssueViewSet(BaseViewSet):
|
||||
issue_id=str(serializer.data.get("id", None)),
|
||||
user_id=request.user.id,
|
||||
)
|
||||
publish_issue_event_on_commit(
|
||||
"issue.updated",
|
||||
updated_issue,
|
||||
actor_id=request.user.id,
|
||||
changed_fields=request.data.keys(),
|
||||
)
|
||||
return Response(status=status.HTTP_204_NO_CONTENT)
|
||||
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
@allow_permission([ROLE.ADMIN], creator=True, model=Issue)
|
||||
def destroy(self, request, slug, project_id, pk=None):
|
||||
issue = Issue.objects.get(workspace__slug=slug, project_id=project_id, pk=pk)
|
||||
issue = Issue.objects.select_related("workspace").get(workspace__slug=slug, project_id=project_id, pk=pk)
|
||||
|
||||
issue.delete()
|
||||
# delete the issue from recent visits
|
||||
@@ -753,6 +766,12 @@ class IssueViewSet(BaseViewSet):
|
||||
origin=base_host(request=request, is_app=True),
|
||||
subscriber=False,
|
||||
)
|
||||
publish_issue_event_on_commit(
|
||||
"issue.deleted",
|
||||
issue,
|
||||
actor_id=request.user.id,
|
||||
changed_fields=["deleted_at"],
|
||||
)
|
||||
return Response(status=status.HTTP_204_NO_CONTENT)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user