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] if user.realm.string_id == settings.SYSTEM_BOT_REALM]
def do_send_confirmation_email(invitee: PreregistrationUser, def do_send_confirmation_email(invitee: PreregistrationUser,
referrer: UserProfile) -> None: referrer: UserProfile) -> str:
""" """
Send the confirmation/welcome e-mail to an invited user. 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, send_email('zerver/emails/invitation', to_emails=[invitee.email], from_name=from_name,
from_address=FromAddress.tokenized_no_reply_address(), from_address=FromAddress.tokenized_no_reply_address(),
language=referrer.realm.default_language, context=context) language=referrer.realm.default_language, context=context)
return activation_url
def email_not_system_bot(email: str) -> None: def email_not_system_bot(email: str) -> None:
if is_cross_realm_bot_email(email): if is_cross_realm_bot_email(email):

View File

@@ -484,8 +484,7 @@ class WorkerTest(ZulipTestCase):
with simulated_queue_client(lambda: fake_client): with simulated_queue_client(lambda: fake_client):
worker = queue_processors.ConfirmationEmailWorker() worker = queue_processors.ConfirmationEmailWorker()
worker.setup() worker.setup()
with patch('zerver.worker.queue_processors.do_send_confirmation_email'), \ with patch('zerver.lib.actions.send_email'), \
patch('zerver.worker.queue_processors.create_confirmation_link'), \
patch('zerver.worker.queue_processors.send_future_email') \ patch('zerver.worker.queue_processors.send_future_email') \
as send_mock, \ as send_mock, \
patch('logging.info'): 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 is_missed_message_address, extract_and_validate
from zerver.lib.streams import access_stream_by_id from zerver.lib.streams import access_stream_by_id
from zerver.tornado.socket import req_redis_key, respond_send_message 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.db import reset_queries
from zerver.lib.redis_utils import get_redis_client from zerver.lib.redis_utils import get_redis_client
from zerver.context_processors import common_context from zerver.context_processors import common_context
@@ -226,14 +226,13 @@ class ConfirmationEmailWorker(QueueProcessingWorker):
referrer = get_user_profile_by_id(data["referrer_id"]) referrer = get_user_profile_by_id(data["referrer_id"])
logger.info("Sending invitation for realm %s to %s" % (referrer.realm.string_id, invitee.email)) 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 # queue invitation reminder
if settings.INVITATION_LINK_VALIDITY_DAYS >= 4: if settings.INVITATION_LINK_VALIDITY_DAYS >= 4:
link = create_confirmation_link(invitee, referrer.realm.host, Confirmation.INVITATION)
context = common_context(referrer) context = common_context(referrer)
context.update({ context.update({
'activate_url': link, 'activate_url': activate_url,
'referrer_name': referrer.full_name, 'referrer_name': referrer.full_name,
'referrer_email': referrer.delivery_email, 'referrer_email': referrer.delivery_email,
'referrer_realm_name': referrer.realm.name, 'referrer_realm_name': referrer.realm.name,