support: Create RealmAuditLog when realm reactivation email is sent.

This commit is contained in:
Siddharth Asthana
2020-12-04 16:16:51 +05:30
committed by Tim Abbott
parent 233c4d520c
commit ddbc6d7662
7 changed files with 21 additions and 7 deletions

View File

@@ -826,7 +826,7 @@ class TestSupportEndpoint(ZulipTestCase):
check_zulip_realm_query_result(result)
MultiuseInvite.objects.all().delete()
do_send_realm_reactivation_email(get_realm("zulip"))
do_send_realm_reactivation_email(get_realm("zulip"), acting_user=None)
result = self.client_get("/activity/support", {"q": "zulip"})
check_realm_reactivation_link_query_result(result)
check_zulip_realm_query_result(result)
@@ -999,7 +999,7 @@ class TestSupportEndpoint(ZulipTestCase):
result = self.client_post(
"/activity/support", {"realm_id": f"{lear_realm.id}", "status": "active"}
)
m.assert_called_once_with(lear_realm)
m.assert_called_once_with(lear_realm, acting_user=self.example_user("iago"))
self.assert_in_success_response(
["Realm reactivation email sent to admins of lear"], result
)

View File

@@ -1308,7 +1308,7 @@ def support(request: HttpRequest) -> HttpResponse:
elif request.POST.get("status", None) is not None:
status = request.POST.get("status")
if status == "active":
do_send_realm_reactivation_email(realm)
do_send_realm_reactivation_email(realm, acting_user=request.user)
context[
"success_message"
] = f"Realm reactivation email sent to admins of {realm.string_id}."

View File

@@ -7103,8 +7103,14 @@ def check_delete_user_group(user_group_id: int, user_profile: UserProfile) -> No
do_send_delete_user_group_event(user_profile.realm, user_group_id, user_profile.realm.id)
def do_send_realm_reactivation_email(realm: Realm) -> None:
def do_send_realm_reactivation_email(realm: Realm, *, acting_user: Optional[UserProfile]) -> None:
url = create_confirmation_link(realm, Confirmation.REALM_REACTIVATION)
RealmAuditLog.objects.create(
realm=realm,
acting_user=acting_user,
event_type=RealmAuditLog.REALM_REACTIVATION_EMAIL_SENT,
event_time=timezone_now(),
)
context = {"confirmation_url": url, "realm_uri": realm.uri, "realm_name": realm.name}
language = realm.default_language
send_email_to_admins(

View File

@@ -17,5 +17,5 @@ class Command(ZulipBaseCommand):
if not realm.deactivated:
raise CommandError(f"The realm {realm.name} is already active.")
print("Sending email to admins")
do_send_realm_reactivation_email(realm)
do_send_realm_reactivation_email(realm, acting_user=None)
print("Done!")

View File

@@ -3190,6 +3190,7 @@ class AbstractRealmAuditLog(models.Model):
REALM_DISCOUNT_CHANGED = 209
REALM_SPONSORSHIP_APPROVED = 210
REALM_BILLING_METHOD_CHANGED = 211
REALM_REACTIVATION_EMAIL_SENT = 212
SUBSCRIPTION_CREATED = 301
SUBSCRIPTION_ACTIVATED = 302

View File

@@ -279,7 +279,8 @@ class RealmTest(ZulipTestCase):
def test_do_send_realm_reactivation_email(self) -> None:
realm = get_realm("zulip")
do_send_realm_reactivation_email(realm)
iago = self.example_user("iago")
do_send_realm_reactivation_email(realm, acting_user=iago)
from django.core.mail import outbox
self.assertEqual(len(outbox), 1)
@@ -298,6 +299,12 @@ class RealmTest(ZulipTestCase):
)
realm = get_realm("zulip")
self.assertFalse(realm.deactivated)
self.assertEqual(
RealmAuditLog.objects.filter(
event_type=RealmAuditLog.REALM_REACTIVATION_EMAIL_SENT, acting_user=iago
).count(),
1,
)
def test_realm_reactivation_with_random_link(self) -> None:
random_link = "/reactivate/5e89081eb13984e0f3b130bf7a4121d153f1614b"

View File

@@ -134,6 +134,6 @@ def generate_all_emails(request: HttpRequest) -> HttpResponse:
enqueue_welcome_emails(get_user_by_delivery_email("iago@zulip.com", realm), realm_creation=True)
# Realm reactivation email
do_send_realm_reactivation_email(realm)
do_send_realm_reactivation_email(realm, acting_user=None)
return redirect(email_page)