diff --git a/apiserver/plane/bgtasks/issue_activites_task.py b/apiserver/plane/bgtasks/issue_activites_task.py index e45ad9b32..523e4bc30 100644 --- a/apiserver/plane/bgtasks/issue_activites_task.py +++ b/apiserver/plane/bgtasks/issue_activites_task.py @@ -1028,21 +1028,26 @@ def issue_activity( actor = User.objects.get(pk=actor_id) project = Project.objects.get(pk=project_id) + if type not in [ + "cycle.activity.created", + "cycle.activity.deleted", + "module.activity.created", + "module.activity.deleted", + ]: + issue = Issue.objects.filter(pk=issue_id, project_id=project_id).first() - issue = Issue.objects.filter(pk=issue_id, project_id=project_id).first() + if issue is not None: + issue.updated_at = timezone.now() + issue.save(update_fields=["updated_at"]) - if issue is not None: - issue.updated_at = timezone.now() - issue.save(update_fields=["updated_at"]) - - if subscriber: - # add the user to issue subscriber - try: - _ = IssueSubscriber.objects.get_or_create( - issue_id=issue_id, subscriber=actor - ) - except Exception as e: - pass + if subscriber: + # add the user to issue subscriber + try: + _ = IssueSubscriber.objects.get_or_create( + issue_id=issue_id, subscriber=actor + ) + except Exception as e: + pass ACTIVITY_MAPPER = { "issue.activity.created": create_issue_activity, @@ -1094,67 +1099,79 @@ def issue_activity( except Exception as e: capture_exception(e) - # Create Notifications - bulk_notifications = [] + if type not in [ + "cycle.activity.created", + "cycle.activity.deleted", + "module.activity.created", + "module.activity.deleted", + ]: + # Create Notifications + bulk_notifications = [] - issue_subscribers = list( - IssueSubscriber.objects.filter(project=project, issue_id=issue_id) - .exclude(subscriber_id=actor_id) - .values_list("subscriber", flat=True) - ) + issue_subscribers = list( + IssueSubscriber.objects.filter(project=project, issue_id=issue_id) + .exclude(subscriber_id=actor_id) + .values_list("subscriber", flat=True) + ) - issue_assignees = list( - IssueAssignee.objects.filter(project=project, issue_id=issue_id) - .exclude(assignee_id=actor_id) - .values_list("assignee", flat=True) - ) + issue_assignees = list( + IssueAssignee.objects.filter(project=project, issue_id=issue_id) + .exclude(assignee_id=actor_id) + .values_list("assignee", flat=True) + ) - issue_subscribers = issue_subscribers + issue_assignees + issue_subscribers = issue_subscribers + issue_assignees - issue = Issue.objects.filter(pk=issue_id, project_id=project_id).first() + issue = Issue.objects.filter(pk=issue_id, project_id=project_id).first() - # Add bot filtering - if issue is not None and issue.created_by_id is not None and not issue.created_by.is_bot: - issue_subscribers = issue_subscribers + [issue.created_by_id] + # Add bot filtering + if ( + issue is not None + and issue.created_by_id is not None + and not issue.created_by.is_bot + ): + issue_subscribers = issue_subscribers + [issue.created_by_id] - for subscriber in issue_subscribers: - for issue_activity in issue_activities_created: - bulk_notifications.append( - Notification( - workspace=project.workspace, - sender="in_app:issue_activities", - triggered_by_id=actor_id, - receiver_id=subscriber, - entity_identifier=issue_id, - entity_name="issue", - project=project, - title=issue_activity.comment, - data={ - "issue": { - "id": str(issue_id), - "name": str(issue.name), - "identifier": str(project.identifier), - "sequence_id": issue.sequence_id, - "state_name": issue.state.name, - "state_group": issue.state.group, + for subscriber in issue_subscribers: + for issue_activity in issue_activities_created: + bulk_notifications.append( + Notification( + workspace=project.workspace, + sender="in_app:issue_activities", + triggered_by_id=actor_id, + receiver_id=subscriber, + entity_identifier=issue_id, + entity_name="issue", + project=project, + title=issue_activity.comment, + data={ + "issue": { + "id": str(issue_id), + "name": str(issue.name), + "identifier": str(project.identifier), + "sequence_id": issue.sequence_id, + "state_name": issue.state.name, + "state_group": issue.state.group, + }, + "issue_activity": { + "id": str(issue_activity.id), + "verb": str(issue_activity.verb), + "field": str(issue_activity.field), + "actor": str(issue_activity.actor_id), + "new_value": str(issue_activity.new_value), + "old_value": str(issue_activity.old_value), + "issue_comment": str( + issue_activity.issue_comment.comment_stripped + if issue_activity.issue_comment is not None + else "" + ), + }, }, - "issue_activity": { - "id": str(issue_activity.id), - "verb": str(issue_activity.verb), - "field": str(issue_activity.field), - "actor": str(issue_activity.actor_id), - "new_value": str(issue_activity.new_value), - "old_value": str(issue_activity.old_value), - "issue_comment": str( - issue_activity.issue_comment.comment_stripped if issue_activity.issue_comment is not None else "" - ), - }, - }, + ) ) - ) - # Bulk create notifications - Notification.objects.bulk_create(bulk_notifications, batch_size=100) + # Bulk create notifications + Notification.objects.bulk_create(bulk_notifications, batch_size=100) return except Exception as e: