forked from github/plane
feat: slack bot setup (#545)
This commit is contained in:
parent
8bd557a743
commit
691ea0c080
@ -2,10 +2,13 @@
|
|||||||
from django.core.mail import EmailMultiAlternatives
|
from django.core.mail import EmailMultiAlternatives
|
||||||
from django.template.loader import render_to_string
|
from django.template.loader import render_to_string
|
||||||
from django.utils.html import strip_tags
|
from django.utils.html import strip_tags
|
||||||
|
from django.conf import settings
|
||||||
|
|
||||||
# Third party imports
|
# Third party imports
|
||||||
from django_rq import job
|
from django_rq import job
|
||||||
from sentry_sdk import capture_exception
|
from sentry_sdk import capture_exception
|
||||||
|
from slack_sdk import WebClient
|
||||||
|
from slack_sdk.errors import SlackApiError
|
||||||
|
|
||||||
# Module imports
|
# Module imports
|
||||||
from plane.db.models import Workspace, User, WorkspaceMemberInvite
|
from plane.db.models import Workspace, User, WorkspaceMemberInvite
|
||||||
@ -13,9 +16,7 @@ from plane.db.models import Workspace, User, WorkspaceMemberInvite
|
|||||||
|
|
||||||
@job("default")
|
@job("default")
|
||||||
def workspace_invitation(email, workspace_id, token, current_site, invitor):
|
def workspace_invitation(email, workspace_id, token, current_site, invitor):
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
|
||||||
workspace = Workspace.objects.get(pk=workspace_id)
|
workspace = Workspace.objects.get(pk=workspace_id)
|
||||||
workspace_member_invite = WorkspaceMemberInvite.objects.get(
|
workspace_member_invite = WorkspaceMemberInvite.objects.get(
|
||||||
token=token, email=email
|
token=token, email=email
|
||||||
@ -49,6 +50,18 @@ def workspace_invitation(email, workspace_id, token, current_site, invitor):
|
|||||||
msg = EmailMultiAlternatives(subject, text_content, from_email_string, [email])
|
msg = EmailMultiAlternatives(subject, text_content, from_email_string, [email])
|
||||||
msg.attach_alternative(html_content, "text/html")
|
msg.attach_alternative(html_content, "text/html")
|
||||||
msg.send()
|
msg.send()
|
||||||
|
|
||||||
|
# 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"{workspace_member_invite.email} has been invited to {workspace.name} as a {workspace_member_invite.role}",
|
||||||
|
)
|
||||||
|
except SlackApiError as e:
|
||||||
|
print(f"Got an error: {e.response['error']}")
|
||||||
|
|
||||||
return
|
return
|
||||||
except (Workspace.DoesNotExist, WorkspaceMemberInvite.DoesNotExist) as e:
|
except (Workspace.DoesNotExist, WorkspaceMemberInvite.DoesNotExist) as e:
|
||||||
return
|
return
|
||||||
|
@ -11,9 +11,12 @@ from django.utils import timezone
|
|||||||
from django.core.mail import EmailMultiAlternatives
|
from django.core.mail import EmailMultiAlternatives
|
||||||
from django.template.loader import render_to_string
|
from django.template.loader import render_to_string
|
||||||
from django.utils.html import strip_tags
|
from django.utils.html import strip_tags
|
||||||
|
from django.conf import settings
|
||||||
|
|
||||||
# Third party imports
|
# Third party imports
|
||||||
from sentry_sdk import capture_exception
|
from sentry_sdk import capture_exception
|
||||||
|
from slack_sdk import WebClient
|
||||||
|
from slack_sdk.errors import SlackApiError
|
||||||
|
|
||||||
|
|
||||||
class User(AbstractBaseUser, PermissionsMixin):
|
class User(AbstractBaseUser, PermissionsMixin):
|
||||||
@ -123,6 +126,16 @@ def send_welcome_email(sender, instance, created, **kwargs):
|
|||||||
msg.attach_alternative(html_content, "text/html")
|
msg.attach_alternative(html_content, "text/html")
|
||||||
msg.send()
|
msg.send()
|
||||||
|
|
||||||
|
# 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
|
return
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
capture_exception(e)
|
capture_exception(e)
|
||||||
|
@ -83,3 +83,4 @@ ANALYTICS_SECRET_KEY = os.environ.get("ANALYTICS_SECRET_KEY", False)
|
|||||||
ANALYTICS_BASE_API = os.environ.get("ANALYTICS_BASE_API", False)
|
ANALYTICS_BASE_API = os.environ.get("ANALYTICS_BASE_API", False)
|
||||||
OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY", False)
|
OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY", False)
|
||||||
GPT_ENGINE = os.environ.get("GPT_ENGINE", "text-davinci-003")
|
GPT_ENGINE = os.environ.get("GPT_ENGINE", "text-davinci-003")
|
||||||
|
SLACK_BOT_TOKEN = os.environ.get("SLACK_BOT_TOKEN", False)
|
||||||
|
@ -231,3 +231,4 @@ ANALYTICS_SECRET_KEY = os.environ.get("ANALYTICS_SECRET_KEY", False)
|
|||||||
ANALYTICS_BASE_API = os.environ.get("ANALYTICS_BASE_API", False)
|
ANALYTICS_BASE_API = os.environ.get("ANALYTICS_BASE_API", False)
|
||||||
OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY", False)
|
OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY", False)
|
||||||
GPT_ENGINE = os.environ.get("GPT_ENGINE", "text-davinci-003")
|
GPT_ENGINE = os.environ.get("GPT_ENGINE", "text-davinci-003")
|
||||||
|
SLACK_BOT_TOKEN = os.environ.get("SLACK_BOT_TOKEN", False)
|
||||||
|
@ -192,3 +192,4 @@ ANALYTICS_SECRET_KEY = os.environ.get("ANALYTICS_SECRET_KEY", False)
|
|||||||
ANALYTICS_BASE_API = os.environ.get("ANALYTICS_BASE_API", False)
|
ANALYTICS_BASE_API = os.environ.get("ANALYTICS_BASE_API", False)
|
||||||
OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY", False)
|
OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY", False)
|
||||||
GPT_ENGINE = os.environ.get("GPT_ENGINE", "text-davinci-003")
|
GPT_ENGINE = os.environ.get("GPT_ENGINE", "text-davinci-003")
|
||||||
|
SLACK_BOT_TOKEN = os.environ.get("SLACK_BOT_TOKEN", False)
|
||||||
|
Loading…
Reference in New Issue
Block a user