From ddbc6d7662870e7ebe78ed17a342c8c0daf15827 Mon Sep 17 00:00:00 2001 From: Siddharth Asthana Date: Fri, 4 Dec 2020 16:16:51 +0530 Subject: [PATCH] support: Create RealmAuditLog when realm reactivation email is sent. --- analytics/tests/test_views.py | 4 ++-- analytics/views.py | 2 +- zerver/lib/actions.py | 8 +++++++- .../management/commands/send_realm_reactivation_email.py | 2 +- zerver/models.py | 1 + zerver/tests/test_realm.py | 9 ++++++++- zerver/views/development/email_log.py | 2 +- 7 files changed, 21 insertions(+), 7 deletions(-) diff --git a/analytics/tests/test_views.py b/analytics/tests/test_views.py index c562910be1..cac37f4b03 100644 --- a/analytics/tests/test_views.py +++ b/analytics/tests/test_views.py @@ -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 ) diff --git a/analytics/views.py b/analytics/views.py index d6d4fa7f7e..e82fac72ea 100644 --- a/analytics/views.py +++ b/analytics/views.py @@ -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}." diff --git a/zerver/lib/actions.py b/zerver/lib/actions.py index 251feabac9..de061d182c 100644 --- a/zerver/lib/actions.py +++ b/zerver/lib/actions.py @@ -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( diff --git a/zerver/management/commands/send_realm_reactivation_email.py b/zerver/management/commands/send_realm_reactivation_email.py index 74f399a92b..ce10238074 100644 --- a/zerver/management/commands/send_realm_reactivation_email.py +++ b/zerver/management/commands/send_realm_reactivation_email.py @@ -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!") diff --git a/zerver/models.py b/zerver/models.py index 14be9ee059..bc1cf53104 100644 --- a/zerver/models.py +++ b/zerver/models.py @@ -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 diff --git a/zerver/tests/test_realm.py b/zerver/tests/test_realm.py index 3967be2d47..841244a47e 100644 --- a/zerver/tests/test_realm.py +++ b/zerver/tests/test_realm.py @@ -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" diff --git a/zerver/views/development/email_log.py b/zerver/views/development/email_log.py index d6a845b9c1..c871b89ac6 100755 --- a/zerver/views/development/email_log.py +++ b/zerver/views/development/email_log.py @@ -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)