forked from github/plane
dev: email configuration settings moved to database
This commit is contained in:
parent
b90218580d
commit
216f07f9d8
@ -18,15 +18,6 @@ REDIS_HOST="plane-redis"
|
|||||||
REDIS_PORT="6379"
|
REDIS_PORT="6379"
|
||||||
REDIS_URL="redis://${REDIS_HOST}:6379/"
|
REDIS_URL="redis://${REDIS_HOST}:6379/"
|
||||||
|
|
||||||
# Email Settings
|
|
||||||
EMAIL_HOST=""
|
|
||||||
EMAIL_HOST_USER=""
|
|
||||||
EMAIL_HOST_PASSWORD=""
|
|
||||||
EMAIL_PORT=587
|
|
||||||
EMAIL_FROM="Team Plane <team@mailer.plane.so>"
|
|
||||||
EMAIL_USE_TLS="1"
|
|
||||||
EMAIL_USE_SSL="0"
|
|
||||||
|
|
||||||
# AWS Settings
|
# AWS Settings
|
||||||
AWS_REGION=""
|
AWS_REGION=""
|
||||||
AWS_ACCESS_KEY_ID="access-key"
|
AWS_ACCESS_KEY_ID="access-key"
|
||||||
|
@ -3,7 +3,7 @@ import csv
|
|||||||
import io
|
import io
|
||||||
|
|
||||||
# Django imports
|
# Django imports
|
||||||
from django.core.mail import EmailMultiAlternatives
|
from django.core.mail import EmailMultiAlternatives, get_connection
|
||||||
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
|
from django.conf import settings
|
||||||
@ -16,6 +16,7 @@ from sentry_sdk import capture_exception
|
|||||||
from plane.db.models import Issue
|
from plane.db.models import Issue
|
||||||
from plane.utils.analytics_plot import build_graph_plot
|
from plane.utils.analytics_plot import build_graph_plot
|
||||||
from plane.utils.issue_filters import issue_filters
|
from plane.utils.issue_filters import issue_filters
|
||||||
|
from plane.license.models import InstanceConfiguration
|
||||||
|
|
||||||
row_mapping = {
|
row_mapping = {
|
||||||
"state__name": "State",
|
"state__name": "State",
|
||||||
@ -47,7 +48,19 @@ def send_export_email(email, slug, csv_buffer):
|
|||||||
text_content = strip_tags(html_content)
|
text_content = strip_tags(html_content)
|
||||||
|
|
||||||
csv_buffer.seek(0)
|
csv_buffer.seek(0)
|
||||||
msg = EmailMultiAlternatives(subject, text_content, settings.EMAIL_FROM, [email])
|
|
||||||
|
# Configure email connection from the database
|
||||||
|
instance_configuration = InstanceConfiguration.objects.filter(key__startswith='EMAIL_').values()
|
||||||
|
connection = get_connection(
|
||||||
|
host=instance_configuration.get("EMAIL_HOST", ""),
|
||||||
|
port=int(instance_configuration.get("EMAIL_PORT", "587")),
|
||||||
|
username=instance_configuration.get("EMAIL_HOST_USER", ""),
|
||||||
|
password=instance_configuration.get("EMAIL_HOST_PASSWORD", ""),
|
||||||
|
use_tls=bool(instance_configuration.get("EMAIL_USE_TLS", "")),
|
||||||
|
use_ssl=bool(instance_configuration.get("EMAIL_USE_SSL", ""))
|
||||||
|
)
|
||||||
|
|
||||||
|
msg = EmailMultiAlternatives(subject=subject, text_content=text_content, from_email=settings.EMAIL_FROM, to=[email], connection=connection)
|
||||||
msg.attach(f"{slug}-analytics.csv", csv_buffer.getvalue())
|
msg.attach(f"{slug}-analytics.csv", csv_buffer.getvalue())
|
||||||
msg.send(fail_silently=False)
|
msg.send(fail_silently=False)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Django imports
|
# Django imports
|
||||||
from django.core.mail import EmailMultiAlternatives
|
from django.core.mail import EmailMultiAlternatives, get_connection
|
||||||
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
|
from django.conf import settings
|
||||||
@ -11,8 +11,7 @@ from celery import shared_task
|
|||||||
from sentry_sdk import capture_exception
|
from sentry_sdk import capture_exception
|
||||||
|
|
||||||
# Module imports
|
# Module imports
|
||||||
from plane.db.models import User
|
from plane.license.models import InstanceConfiguration
|
||||||
|
|
||||||
|
|
||||||
@shared_task
|
@shared_task
|
||||||
def email_verification(first_name, email, token, current_site):
|
def email_verification(first_name, email, token, current_site):
|
||||||
@ -34,7 +33,18 @@ def email_verification(first_name, email, token, current_site):
|
|||||||
|
|
||||||
text_content = strip_tags(html_content)
|
text_content = strip_tags(html_content)
|
||||||
|
|
||||||
msg = EmailMultiAlternatives(subject, text_content, from_email_string, [email])
|
# Configure email connection from the database
|
||||||
|
instance_configuration = InstanceConfiguration.objects.filter(key__startswith='EMAIL_').values()
|
||||||
|
connection = get_connection(
|
||||||
|
host=instance_configuration.get("EMAIL_HOST", ""),
|
||||||
|
port=int(instance_configuration.get("EMAIL_PORT", "587")),
|
||||||
|
username=instance_configuration.get("EMAIL_HOST_USER", ""),
|
||||||
|
password=instance_configuration.get("EMAIL_HOST_PASSWORD", ""),
|
||||||
|
use_tls=bool(instance_configuration.get("EMAIL_USE_TLS", "")),
|
||||||
|
use_ssl=bool(instance_configuration.get("EMAIL_USE_SSL", ""))
|
||||||
|
)
|
||||||
|
# Initiate email alternatives
|
||||||
|
msg = EmailMultiAlternatives(subject=subject, text_content=text_content, from_email=settings.EMAIL_FROM, to=[email], connection=connection)
|
||||||
msg.attach_alternative(html_content, "text/html")
|
msg.attach_alternative(html_content, "text/html")
|
||||||
msg.send()
|
msg.send()
|
||||||
return
|
return
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Django imports
|
# Django imports
|
||||||
from django.core.mail import EmailMultiAlternatives
|
from django.core.mail import EmailMultiAlternatives, get_connection
|
||||||
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
|
from django.conf import settings
|
||||||
@ -8,6 +8,8 @@ from django.conf import settings
|
|||||||
from celery import shared_task
|
from celery import shared_task
|
||||||
from sentry_sdk import capture_exception
|
from sentry_sdk import capture_exception
|
||||||
|
|
||||||
|
# Module imports
|
||||||
|
from plane.license.models import InstanceConfiguration
|
||||||
|
|
||||||
|
|
||||||
@shared_task
|
@shared_task
|
||||||
@ -30,7 +32,18 @@ def forgot_password(first_name, email, uidb64, token, current_site):
|
|||||||
|
|
||||||
text_content = strip_tags(html_content)
|
text_content = strip_tags(html_content)
|
||||||
|
|
||||||
msg = EmailMultiAlternatives(subject, text_content, from_email_string, [email])
|
# Configure email connection from the database
|
||||||
|
instance_configuration = InstanceConfiguration.objects.filter(key__startswith='EMAIL_').values()
|
||||||
|
connection = get_connection(
|
||||||
|
host=instance_configuration.get("EMAIL_HOST", ""),
|
||||||
|
port=int(instance_configuration.get("EMAIL_PORT", "587")),
|
||||||
|
username=instance_configuration.get("EMAIL_HOST_USER", ""),
|
||||||
|
password=instance_configuration.get("EMAIL_HOST_PASSWORD", ""),
|
||||||
|
use_tls=bool(instance_configuration.get("EMAIL_USE_TLS", "")),
|
||||||
|
use_ssl=bool(instance_configuration.get("EMAIL_USE_SSL", ""))
|
||||||
|
)
|
||||||
|
# Initiate email alternatives
|
||||||
|
msg = EmailMultiAlternatives(subject=subject, text_content=text_content, from_email=settings.EMAIL_FROM, to=[email], connection=connection)
|
||||||
msg.attach_alternative(html_content, "text/html")
|
msg.attach_alternative(html_content, "text/html")
|
||||||
msg.send()
|
msg.send()
|
||||||
return
|
return
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Django imports
|
# Django imports
|
||||||
from django.core.mail import EmailMultiAlternatives
|
from django.core.mail import EmailMultiAlternatives, get_connection
|
||||||
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
|
from django.conf import settings
|
||||||
@ -8,6 +8,8 @@ from django.conf import settings
|
|||||||
from celery import shared_task
|
from celery import shared_task
|
||||||
from sentry_sdk import capture_exception
|
from sentry_sdk import capture_exception
|
||||||
|
|
||||||
|
# Module imports
|
||||||
|
from plane.license.models import InstanceConfiguration
|
||||||
|
|
||||||
@shared_task
|
@shared_task
|
||||||
def magic_link(email, key, token, current_site):
|
def magic_link(email, key, token, current_site):
|
||||||
@ -25,7 +27,18 @@ def magic_link(email, key, token, current_site):
|
|||||||
|
|
||||||
text_content = strip_tags(html_content)
|
text_content = strip_tags(html_content)
|
||||||
|
|
||||||
msg = EmailMultiAlternatives(subject, text_content, from_email_string, [email])
|
# Configure email connection from the database
|
||||||
|
instance_configuration = InstanceConfiguration.objects.filter(key__startswith='EMAIL_').values()
|
||||||
|
connection = get_connection(
|
||||||
|
host=instance_configuration.get("EMAIL_HOST", ""),
|
||||||
|
port=int(instance_configuration.get("EMAIL_PORT", "587")),
|
||||||
|
username=instance_configuration.get("EMAIL_HOST_USER", ""),
|
||||||
|
password=instance_configuration.get("EMAIL_HOST_PASSWORD", ""),
|
||||||
|
use_tls=bool(instance_configuration.get("EMAIL_USE_TLS", "")),
|
||||||
|
use_ssl=bool(instance_configuration.get("EMAIL_USE_SSL", ""))
|
||||||
|
)
|
||||||
|
# Initiate email alternatives
|
||||||
|
msg = EmailMultiAlternatives(subject=subject, text_content=text_content, from_email=settings.EMAIL_FROM, to=[email], connection=connection)
|
||||||
msg.attach_alternative(html_content, "text/html")
|
msg.attach_alternative(html_content, "text/html")
|
||||||
msg.send()
|
msg.send()
|
||||||
return
|
return
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Django imports
|
# Django imports
|
||||||
from django.core.mail import EmailMultiAlternatives
|
from django.core.mail import EmailMultiAlternatives, get_connection
|
||||||
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
|
from django.conf import settings
|
||||||
@ -10,6 +10,7 @@ from sentry_sdk import capture_exception
|
|||||||
|
|
||||||
# Module imports
|
# Module imports
|
||||||
from plane.db.models import Project, User, ProjectMemberInvite
|
from plane.db.models import Project, User, ProjectMemberInvite
|
||||||
|
from plane.license.models import InstanceConfiguration
|
||||||
|
|
||||||
|
|
||||||
@shared_task
|
@shared_task
|
||||||
@ -43,7 +44,18 @@ def project_invitation(email, project_id, token, current_site):
|
|||||||
project_member_invite.message = text_content
|
project_member_invite.message = text_content
|
||||||
project_member_invite.save()
|
project_member_invite.save()
|
||||||
|
|
||||||
msg = EmailMultiAlternatives(subject, text_content, from_email_string, [email])
|
# Configure email connection from the database
|
||||||
|
instance_configuration = InstanceConfiguration.objects.filter(key__startswith='EMAIL_').values()
|
||||||
|
connection = get_connection(
|
||||||
|
host=instance_configuration.get("EMAIL_HOST", ""),
|
||||||
|
port=int(instance_configuration.get("EMAIL_PORT", "587")),
|
||||||
|
username=instance_configuration.get("EMAIL_HOST_USER", ""),
|
||||||
|
password=instance_configuration.get("EMAIL_HOST_PASSWORD", ""),
|
||||||
|
use_tls=bool(instance_configuration.get("EMAIL_USE_TLS", "")),
|
||||||
|
use_ssl=bool(instance_configuration.get("EMAIL_USE_SSL", ""))
|
||||||
|
)
|
||||||
|
# Initiate email alternatives
|
||||||
|
msg = EmailMultiAlternatives(subject=subject, text_content=text_content, from_email=settings.EMAIL_FROM, to=[email], connection=connection)
|
||||||
msg.attach_alternative(html_content, "text/html")
|
msg.attach_alternative(html_content, "text/html")
|
||||||
msg.send()
|
msg.send()
|
||||||
return
|
return
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Django imports
|
# Django imports
|
||||||
from django.core.mail import EmailMultiAlternatives
|
from django.core.mail import EmailMultiAlternatives, get_connection
|
||||||
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
|
from django.conf import settings
|
||||||
@ -12,7 +12,7 @@ from slack_sdk.errors import SlackApiError
|
|||||||
|
|
||||||
# Module imports
|
# Module imports
|
||||||
from plane.db.models import Workspace, WorkspaceMemberInvite
|
from plane.db.models import Workspace, WorkspaceMemberInvite
|
||||||
|
from plane.license.models import InstanceConfiguration
|
||||||
|
|
||||||
@shared_task
|
@shared_task
|
||||||
def workspace_invitation(email, workspace_id, token, current_site, invitor):
|
def workspace_invitation(email, workspace_id, token, current_site, invitor):
|
||||||
@ -47,7 +47,18 @@ def workspace_invitation(email, workspace_id, token, current_site, invitor):
|
|||||||
workspace_member_invite.message = text_content
|
workspace_member_invite.message = text_content
|
||||||
workspace_member_invite.save()
|
workspace_member_invite.save()
|
||||||
|
|
||||||
msg = EmailMultiAlternatives(subject, text_content, from_email_string, [email])
|
# Configure email connection from the database
|
||||||
|
instance_configuration = InstanceConfiguration.objects.filter(key__startswith='EMAIL_').values()
|
||||||
|
connection = get_connection(
|
||||||
|
host=instance_configuration.get("EMAIL_HOST", ""),
|
||||||
|
port=int(instance_configuration.get("EMAIL_PORT", "587")),
|
||||||
|
username=instance_configuration.get("EMAIL_HOST_USER", ""),
|
||||||
|
password=instance_configuration.get("EMAIL_HOST_PASSWORD", ""),
|
||||||
|
use_tls=bool(instance_configuration.get("EMAIL_USE_TLS", "")),
|
||||||
|
use_ssl=bool(instance_configuration.get("EMAIL_USE_SSL", ""))
|
||||||
|
)
|
||||||
|
# Initiate email alternatives
|
||||||
|
msg = EmailMultiAlternatives(subject=subject, text_content=text_content, from_email=settings.EMAIL_FROM, to=[email], connection=connection)
|
||||||
msg.attach_alternative(html_content, "text/html")
|
msg.attach_alternative(html_content, "text/html")
|
||||||
msg.send()
|
msg.send()
|
||||||
|
|
||||||
|
@ -173,16 +173,6 @@ USE_TZ = True
|
|||||||
DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"
|
DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"
|
||||||
|
|
||||||
EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
|
EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
|
||||||
# Host for sending e-mail.
|
|
||||||
EMAIL_HOST = os.environ.get("EMAIL_HOST")
|
|
||||||
# Port for sending e-mail.
|
|
||||||
EMAIL_PORT = int(os.environ.get("EMAIL_PORT", 587))
|
|
||||||
# Optional SMTP authentication information for EMAIL_HOST.
|
|
||||||
EMAIL_HOST_USER = os.environ.get("EMAIL_HOST_USER")
|
|
||||||
EMAIL_HOST_PASSWORD = os.environ.get("EMAIL_HOST_PASSWORD")
|
|
||||||
EMAIL_USE_TLS = os.environ.get("EMAIL_USE_TLS", "1") == "1"
|
|
||||||
EMAIL_USE_SSL = os.environ.get("EMAIL_USE_SSL", "0") == "1"
|
|
||||||
EMAIL_FROM = os.environ.get("EMAIL_FROM", "Team Plane <team@mailer.plane.so>")
|
|
||||||
|
|
||||||
|
|
||||||
SIMPLE_JWT = {
|
SIMPLE_JWT = {
|
||||||
|
Loading…
Reference in New Issue
Block a user