mirror of
https://github.com/zulip/zulip.git
synced 2025-11-13 18:36:36 +00:00
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:
@@ -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")
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user