invites: Change resend invitation pathway to use existing code.

This code changes frequently enough that errors are bound to creep in.  The
main change is that this sends the original invitation email instead of the
reminder email, but I think that's fine.
This commit is contained in:
Rishi Gupta
2017-12-04 22:51:25 -08:00
committed by Greg Price
parent e8b33f2c78
commit e48bc9136a
2 changed files with 17 additions and 26 deletions

View File

@@ -4044,26 +4044,10 @@ def do_resend_user_invite_email(invite_id: int, realm_id: int) -> str:
prereg_user.invited_at = timezone_now()
prereg_user.save()
# sends a invitation reminder since 'custom_body' can not be resent
# imported here to avoid import cycle error
from zerver.context_processors import common_context
clear_scheduled_invitation_emails(prereg_user.email)
link = create_confirmation_link(prereg_user,
prereg_user.referred_by.realm.host,
Confirmation.INVITATION)
context = common_context(prereg_user.referred_by)
context.update({
'activate_url': link,
'referrer_name': prereg_user.referred_by.full_name,
'referrer_email': prereg_user.referred_by.email,
'referrer_realm_name': prereg_user.referred_by.realm.name,
})
send_email(
"zerver/emails/invitation_reminder",
to_email=prereg_user.email,
from_address=FromAddress.NOREPLY,
context=context)
# We don't store the custom email body, so just set it to None
event = {"email": prereg_user.email, "referrer_id": prereg_user.referred_by.id, "email_body": None}
queue_json_publish("invites", event)
return prereg_user.invited_at.strftime("%Y-%m-%d %H:%M:%S")

View File

@@ -971,7 +971,7 @@ class InvitationsTestCase(InviteUserBase):
and delete any scheduled invitation reminder email.
"""
self.login(self.example_email("iago"))
invitee = "ResendMe@zulip.com"
invitee = "resend_me@zulip.com"
self.assert_json_success(self.invite(invitee, ['Denmark']))
prereg_user = PreregistrationUser.objects.get(email=invitee)
@@ -982,9 +982,20 @@ class InvitationsTestCase(InviteUserBase):
outbox.pop()
# Verify that the scheduled email exists.
ScheduledEmail.objects.get(address__iexact=invitee,
type=ScheduledEmail.INVITATION_REMINDER)
scheduledemail_filter = ScheduledEmail.objects.filter(
address=invitee, type=ScheduledEmail.INVITATION_REMINDER)
self.assertEqual(scheduledemail_filter.count(), 1)
original_timestamp = scheduledemail_filter.values_list('scheduled_timestamp', flat=True)
# Resend invite
result = self.client_post('/json/invites/' + str(prereg_user.id) + '/resend')
self.assertEqual(ScheduledEmail.objects.filter(
address=invitee, type=ScheduledEmail.INVITATION_REMINDER).count(), 1)
# Check that we have exactly one scheduled email, and that it is different
self.assertEqual(scheduledemail_filter.count(), 1)
self.assertNotEqual(original_timestamp,
scheduledemail_filter.values_list('scheduled_timestamp', flat=True))
self.assertEqual(result.status_code, 200)
error_result = self.client_post('/json/invites/' + str(9999) + '/resend')
@@ -992,10 +1003,6 @@ class InvitationsTestCase(InviteUserBase):
self.check_sent_emails([invitee], custom_from_name="Zulip")
self.assertRaises(ScheduledEmail.DoesNotExist,
lambda: ScheduledEmail.objects.get(address__iexact=invitee,
type=ScheduledEmail.INVITATION_REMINDER))
class InviteeEmailsParserTests(TestCase):
def setUp(self) -> None:
self.email1 = "email1@zulip.com"