mirror of
https://github.com/zulip/zulip.git
synced 2025-11-03 13:33:24 +00:00
notifications: Move send_future_email to zerver/lib/send_email.py.
This commit is contained in:
@@ -10,8 +10,9 @@ from django.db.models import Q, QuerySet
|
|||||||
from django.template import loader
|
from django.template import loader
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
|
||||||
|
from zerver.lib.send_email import send_future_email
|
||||||
from zerver.lib.notifications import build_message_list, hash_util_encode, \
|
from zerver.lib.notifications import build_message_list, hash_util_encode, \
|
||||||
send_future_email, one_click_unsubscribe_link
|
one_click_unsubscribe_link
|
||||||
from zerver.models import UserProfile, UserMessage, Recipient, Stream, \
|
from zerver.models import UserProfile, UserMessage, Recipient, Stream, \
|
||||||
Subscription, get_active_streams
|
Subscription, get_active_streams
|
||||||
from zerver.context_processors import common_context
|
from zerver.context_processors import common_context
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ from django.core.mail import EmailMultiAlternatives
|
|||||||
from django.template import loader
|
from django.template import loader
|
||||||
from django.utils.timezone import now as timezone_now
|
from django.utils.timezone import now as timezone_now
|
||||||
from zerver.decorator import statsd_increment
|
from zerver.decorator import statsd_increment
|
||||||
|
from zerver.lib.send_email import send_future_email
|
||||||
from zerver.lib.queue import queue_json_publish
|
from zerver.lib.queue import queue_json_publish
|
||||||
from zerver.models import (
|
from zerver.models import (
|
||||||
Recipient,
|
Recipient,
|
||||||
@@ -378,26 +379,6 @@ def log_digest_event(msg):
|
|||||||
logging.basicConfig(filename=settings.DIGEST_LOG_PATH, level=logging.INFO)
|
logging.basicConfig(filename=settings.DIGEST_LOG_PATH, level=logging.INFO)
|
||||||
logging.info(msg)
|
logging.info(msg)
|
||||||
|
|
||||||
def send_future_email(template_prefix, recipients, from_email=None, context={},
|
|
||||||
delay=datetime.timedelta(0), tags=[]):
|
|
||||||
# type: (str, List[Dict[str, Any]], Optional[Text], Dict[str, Any], datetime.timedelta, Iterable[Text]) -> None
|
|
||||||
subject = loader.render_to_string(template_prefix + '.subject', context).strip()
|
|
||||||
email_text = loader.render_to_string(template_prefix + '.txt', context)
|
|
||||||
email_html = loader.render_to_string(template_prefix + '.html', context)
|
|
||||||
|
|
||||||
if from_email is None:
|
|
||||||
from_email = settings.NOREPLY_EMAIL_ADDRESS
|
|
||||||
for recipient in recipients:
|
|
||||||
email_fields = {'email_html': email_html,
|
|
||||||
'email_subject': subject,
|
|
||||||
'email_text': email_text,
|
|
||||||
'recipient_email': recipient.get('email'),
|
|
||||||
'recipient_name': recipient.get('name'),
|
|
||||||
'from_email': from_email}
|
|
||||||
ScheduledJob.objects.create(type=ScheduledJob.EMAIL, filter_string=recipient.get('email'),
|
|
||||||
data=ujson.dumps(email_fields),
|
|
||||||
scheduled_timestamp=timezone_now() + delay)
|
|
||||||
|
|
||||||
def enqueue_welcome_emails(email, name):
|
def enqueue_welcome_emails(email, name):
|
||||||
# type: (Text, Text) -> None
|
# type: (Text, Text) -> None
|
||||||
from zerver.context_processors import common_context
|
from zerver.context_processors import common_context
|
||||||
|
|||||||
@@ -1,9 +1,13 @@
|
|||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.core.mail import send_mail
|
from django.core.mail import send_mail
|
||||||
from django.template import loader, TemplateDoesNotExist
|
from django.template import loader, TemplateDoesNotExist
|
||||||
from zerver.models import UserProfile
|
from django.utils.timezone import now as timezone_now
|
||||||
|
from zerver.models import UserProfile, ScheduledJob, get_user_profile_by_email
|
||||||
|
|
||||||
from typing import Dict, List, Optional, Text
|
import datetime
|
||||||
|
import ujson
|
||||||
|
|
||||||
|
from typing import Any, Dict, Iterable, List, Optional, Text
|
||||||
|
|
||||||
def display_email(user):
|
def display_email(user):
|
||||||
# type: (UserProfile) -> Text
|
# type: (UserProfile) -> Text
|
||||||
@@ -27,3 +31,23 @@ def send_email(template_prefix, to_email, from_email=None, context={}):
|
|||||||
def send_email_to_user(template_prefix, user, from_email=None, context={}):
|
def send_email_to_user(template_prefix, user, from_email=None, context={}):
|
||||||
# type: (str, UserProfile, Optional[Text], Dict[str, Text]) -> bool
|
# type: (str, UserProfile, Optional[Text], Dict[str, Text]) -> bool
|
||||||
return send_email(template_prefix, display_email(user), from_email=from_email, context=context)
|
return send_email(template_prefix, display_email(user), from_email=from_email, context=context)
|
||||||
|
|
||||||
|
def send_future_email(template_prefix, recipients, from_email=None, context={},
|
||||||
|
delay=datetime.timedelta(0), tags=[]):
|
||||||
|
# type: (str, List[Dict[str, Any]], Optional[Text], Dict[str, Any], datetime.timedelta, Iterable[Text]) -> None
|
||||||
|
subject = loader.render_to_string(template_prefix + '.subject', context).strip()
|
||||||
|
email_text = loader.render_to_string(template_prefix + '.txt', context)
|
||||||
|
email_html = loader.render_to_string(template_prefix + '.html', context)
|
||||||
|
|
||||||
|
if from_email is None:
|
||||||
|
from_email = settings.NOREPLY_EMAIL_ADDRESS
|
||||||
|
for recipient in recipients:
|
||||||
|
email_fields = {'email_html': email_html,
|
||||||
|
'email_subject': subject,
|
||||||
|
'email_text': email_text,
|
||||||
|
'recipient_email': recipient.get('email'),
|
||||||
|
'recipient_name': recipient.get('name'),
|
||||||
|
'from_email': from_email}
|
||||||
|
ScheduledJob.objects.create(type=ScheduledJob.EMAIL, filter_string=recipient.get('email'),
|
||||||
|
data=ujson.dumps(email_fields),
|
||||||
|
scheduled_timestamp=timezone_now() + delay)
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ from zerver.lib.actions import (
|
|||||||
get_stream,
|
get_stream,
|
||||||
do_create_realm,
|
do_create_realm,
|
||||||
)
|
)
|
||||||
|
from zerver.lib.send_email import send_future_email
|
||||||
from zerver.lib.initial_password import initial_password
|
from zerver.lib.initial_password import initial_password
|
||||||
from zerver.lib.actions import (
|
from zerver.lib.actions import (
|
||||||
do_deactivate_realm,
|
do_deactivate_realm,
|
||||||
@@ -45,7 +45,7 @@ from zerver.lib.actions import (
|
|||||||
from zerver.lib.mobile_auth_otp import xor_hex_strings, ascii_to_hex, \
|
from zerver.lib.mobile_auth_otp import xor_hex_strings, ascii_to_hex, \
|
||||||
otp_encrypt_api_key, is_valid_otp, hex_to_ascii, otp_decrypt_api_key
|
otp_encrypt_api_key, is_valid_otp, hex_to_ascii, otp_decrypt_api_key
|
||||||
from zerver.lib.notifications import enqueue_welcome_emails, \
|
from zerver.lib.notifications import enqueue_welcome_emails, \
|
||||||
one_click_unsubscribe_link, send_future_email
|
one_click_unsubscribe_link
|
||||||
from zerver.lib.test_helpers import find_pattern_in_email, find_key_by_email, queries_captured, \
|
from zerver.lib.test_helpers import find_pattern_in_email, find_key_by_email, queries_captured, \
|
||||||
HostRequestMock, unsign_subdomain_cookie
|
HostRequestMock, unsign_subdomain_cookie
|
||||||
from zerver.lib.test_classes import (
|
from zerver.lib.test_classes import (
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ from zerver.lib.feedback import handle_feedback
|
|||||||
from zerver.lib.queue import SimpleQueueClient, queue_json_publish
|
from zerver.lib.queue import SimpleQueueClient, queue_json_publish
|
||||||
from zerver.lib.timestamp import timestamp_to_datetime
|
from zerver.lib.timestamp import timestamp_to_datetime
|
||||||
from zerver.lib.notifications import handle_missedmessage_emails, enqueue_welcome_emails, \
|
from zerver.lib.notifications import handle_missedmessage_emails, enqueue_welcome_emails, \
|
||||||
clear_followup_emails_queue, send_future_email, send_missedmessage_email
|
clear_followup_emails_queue, send_missedmessage_email
|
||||||
from zerver.lib.push_notifications import handle_push_notification
|
from zerver.lib.push_notifications import handle_push_notification
|
||||||
from zerver.lib.actions import do_send_confirmation_email, \
|
from zerver.lib.actions import do_send_confirmation_email, \
|
||||||
do_update_user_activity, do_update_user_activity_interval, do_update_user_presence, \
|
do_update_user_activity, do_update_user_activity_interval, do_update_user_presence, \
|
||||||
@@ -22,6 +22,7 @@ from zerver.lib.actions import do_send_confirmation_email, \
|
|||||||
render_incoming_message, do_update_embedded_data
|
render_incoming_message, do_update_embedded_data
|
||||||
from zerver.lib.url_preview import preview as url_preview
|
from zerver.lib.url_preview import preview as url_preview
|
||||||
from zerver.lib.digest import handle_digest_email
|
from zerver.lib.digest import handle_digest_email
|
||||||
|
from zerver.lib.send_email import send_future_email
|
||||||
from zerver.lib.email_mirror import process_message as mirror_email
|
from zerver.lib.email_mirror import process_message as mirror_email
|
||||||
from zerver.decorator import JsonableError
|
from zerver.decorator import JsonableError
|
||||||
from zerver.tornado.socket import req_redis_key
|
from zerver.tornado.socket import req_redis_key
|
||||||
|
|||||||
Reference in New Issue
Block a user