forked from github/plane
chore: importer user invite email (#972)
This commit is contained in:
parent
742731cbe6
commit
21992f540f
@ -27,6 +27,7 @@ from plane.db.models import (
|
|||||||
User,
|
User,
|
||||||
)
|
)
|
||||||
from .workspace_invitation_task import workspace_invitation
|
from .workspace_invitation_task import workspace_invitation
|
||||||
|
from plane.bgtasks.user_welcome_task import send_welcome_email
|
||||||
|
|
||||||
|
|
||||||
@shared_task
|
@shared_task
|
||||||
@ -40,7 +41,7 @@ def service_importer(service, importer_id):
|
|||||||
|
|
||||||
# Check if we need to import users as well
|
# Check if we need to import users as well
|
||||||
if len(users):
|
if len(users):
|
||||||
# For all invited users create the uers
|
# For all invited users create the users
|
||||||
new_users = User.objects.bulk_create(
|
new_users = User.objects.bulk_create(
|
||||||
[
|
[
|
||||||
User(
|
User(
|
||||||
@ -56,6 +57,13 @@ def service_importer(service, importer_id):
|
|||||||
ignore_conflicts=True,
|
ignore_conflicts=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
[
|
||||||
|
send_welcome_email.delay(
|
||||||
|
user, True, f"{user.email} was imported to Plane from {service}"
|
||||||
|
)
|
||||||
|
for user in new_users
|
||||||
|
]
|
||||||
|
|
||||||
workspace_users = User.objects.filter(
|
workspace_users = User.objects.filter(
|
||||||
email__in=[
|
email__in=[
|
||||||
user.get("email").strip().lower()
|
user.get("email").strip().lower()
|
||||||
|
50
apiserver/plane/bgtasks/user_welcome_task.py
Normal file
50
apiserver/plane/bgtasks/user_welcome_task.py
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
# Django imports
|
||||||
|
from django.conf import settings
|
||||||
|
from django.core.mail import EmailMultiAlternatives
|
||||||
|
from django.template.loader import render_to_string
|
||||||
|
from django.utils.html import strip_tags
|
||||||
|
|
||||||
|
# Third party imports
|
||||||
|
from celery import shared_task
|
||||||
|
from sentry_sdk import capture_exception
|
||||||
|
from slack_sdk import WebClient
|
||||||
|
from slack_sdk.errors import SlackApiError
|
||||||
|
|
||||||
|
@shared_task
|
||||||
|
def send_welcome_email(instance, created, message):
|
||||||
|
try:
|
||||||
|
if created and not instance.is_bot:
|
||||||
|
first_name = instance.first_name.capitalize()
|
||||||
|
to_email = instance.email
|
||||||
|
from_email_string = settings.EMAIL_FROM
|
||||||
|
|
||||||
|
subject = f"Welcome to Plane ✈️!"
|
||||||
|
|
||||||
|
context = {"first_name": first_name, "email": instance.email}
|
||||||
|
|
||||||
|
html_content = render_to_string(
|
||||||
|
"emails/auth/user_welcome_email.html", context
|
||||||
|
)
|
||||||
|
|
||||||
|
text_content = strip_tags(html_content)
|
||||||
|
|
||||||
|
msg = EmailMultiAlternatives(
|
||||||
|
subject, text_content, from_email_string, [to_email]
|
||||||
|
)
|
||||||
|
msg.attach_alternative(html_content, "text/html")
|
||||||
|
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=message,
|
||||||
|
)
|
||||||
|
except SlackApiError as e:
|
||||||
|
print(f"Got an error: {e.response['error']}")
|
||||||
|
return
|
||||||
|
except Exception as e:
|
||||||
|
capture_exception(e)
|
||||||
|
return
|
Loading…
Reference in New Issue
Block a user