From a18f82202baee0e617afb86ab82b51be2bee90f6 Mon Sep 17 00:00:00 2001 From: sriram veeraghanta Date: Wed, 28 Feb 2024 17:06:46 +0530 Subject: [PATCH] fix: welcome slack message enabled --- apiserver/plane/bgtasks/importer_task.py | 10 +++++++++ apiserver/plane/db/models/user.py | 26 +++++++++++++++++++++++- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/apiserver/plane/bgtasks/importer_task.py b/apiserver/plane/bgtasks/importer_task.py index d327b49a6b..941d73e47c 100644 --- a/apiserver/plane/bgtasks/importer_task.py +++ b/apiserver/plane/bgtasks/importer_task.py @@ -26,6 +26,7 @@ from plane.db.models import ( IssueProperty, UserNotificationPreference, ) + from plane.bgtasks.user_welcome_task import send_welcome_slack @@ -61,6 +62,15 @@ def service_importer(service, importer_id): batch_size=100, ) + _ = [ + send_welcome_slack.delay( + str(user.id), + True, + f"{user.email} was imported to Plane from {service}", + ) + for user in new_users + ] + workspace_users = User.objects.filter( email__in=[ user.get("email").strip().lower() diff --git a/apiserver/plane/db/models/user.py b/apiserver/plane/db/models/user.py index 11bb125889..f5b4bda13f 100644 --- a/apiserver/plane/db/models/user.py +++ b/apiserver/plane/db/models/user.py @@ -18,6 +18,11 @@ from django.db.models.signals import post_save from django.dispatch import receiver from django.conf import settings +# Third party imports +from sentry_sdk import capture_exception +from slack_sdk import WebClient +from slack_sdk.errors import SlackApiError + def get_default_onboarding(): return { @@ -141,7 +146,6 @@ class User(AbstractBaseUser, PermissionsMixin): super(User, self).save(*args, **kwargs) - @receiver(post_save, sender=User) def create_user_notification(sender, instance, created, **kwargs): # create preferences @@ -157,3 +161,23 @@ def create_user_notification(sender, instance, created, **kwargs): mention=False, issue_completed=False, ) + + +@receiver(post_save, sender=User) +def send_welcome_slack(sender, instance, created, **kwargs): + try: + if created and not instance.is_bot: + # Send message on slack as well + if settings.SLACK_BOT_TOKEN: + client = WebClient(token=settings.SLACK_BOT_TOKEN) + try: + _ = client.chat_postMessage( + channel="#trackers", + text=f"New user {instance.email} has signed up and begun the onboarding journey.", + ) + except SlackApiError as e: + print(f"Got an error: {e.response['error']}") + return + except Exception as e: + capture_exception(e) + return