queue: Don't create confirmation objects twice during invite.

A confirmation object is already created when
do_send_confirmation_email is called just above.

Tweaked by tabbott to remove an unnecessary somewhat hacky database
query.
This commit is contained in:
Vishnu KS
2019-09-12 20:52:51 +05:30
committed by Tim Abbott
parent 4dc3ed36c3
commit ae5bc92602
3 changed files with 6 additions and 7 deletions

View File

@@ -4907,7 +4907,7 @@ def get_cross_realm_dicts() -> List[Dict[str, Any]]:
if user.realm.string_id == settings.SYSTEM_BOT_REALM]
def do_send_confirmation_email(invitee: PreregistrationUser,
referrer: UserProfile) -> None:
referrer: UserProfile) -> str:
"""
Send the confirmation/welcome e-mail to an invited user.
"""
@@ -4918,6 +4918,7 @@ def do_send_confirmation_email(invitee: PreregistrationUser,
send_email('zerver/emails/invitation', to_emails=[invitee.email], from_name=from_name,
from_address=FromAddress.tokenized_no_reply_address(),
language=referrer.realm.default_language, context=context)
return activation_url
def email_not_system_bot(email: str) -> None:
if is_cross_realm_bot_email(email):

View File

@@ -484,8 +484,7 @@ class WorkerTest(ZulipTestCase):
with simulated_queue_client(lambda: fake_client):
worker = queue_processors.ConfirmationEmailWorker()
worker.setup()
with patch('zerver.worker.queue_processors.do_send_confirmation_email'), \
patch('zerver.worker.queue_processors.create_confirmation_link'), \
with patch('zerver.lib.actions.send_email'), \
patch('zerver.worker.queue_processors.send_future_email') \
as send_mock, \
patch('logging.info'):

View File

@@ -38,7 +38,7 @@ from zerver.lib.email_mirror import process_message as mirror_email, rate_limit_
is_missed_message_address, extract_and_validate
from zerver.lib.streams import access_stream_by_id
from zerver.tornado.socket import req_redis_key, respond_send_message
from confirmation.models import Confirmation, create_confirmation_link
from confirmation.models import Confirmation, confirmation_url
from zerver.lib.db import reset_queries
from zerver.lib.redis_utils import get_redis_client
from zerver.context_processors import common_context
@@ -226,14 +226,13 @@ class ConfirmationEmailWorker(QueueProcessingWorker):
referrer = get_user_profile_by_id(data["referrer_id"])
logger.info("Sending invitation for realm %s to %s" % (referrer.realm.string_id, invitee.email))
do_send_confirmation_email(invitee, referrer)
activate_url = do_send_confirmation_email(invitee, referrer)
# queue invitation reminder
if settings.INVITATION_LINK_VALIDITY_DAYS >= 4:
link = create_confirmation_link(invitee, referrer.realm.host, Confirmation.INVITATION)
context = common_context(referrer)
context.update({
'activate_url': link,
'activate_url': activate_url,
'referrer_name': referrer.full_name,
'referrer_email': referrer.delivery_email,
'referrer_realm_name': referrer.realm.name,