From bbd0f6e11c88479c9f50aef1eecb579afd69b5bd Mon Sep 17 00:00:00 2001 From: Lauryn Menard Date: Tue, 17 Jun 2025 20:57:05 +0200 Subject: [PATCH] support: Revise view for scrubbed realms. When a realm is scrubbed, there should be no support actions to take and all user information has been removed. --- corporate/lib/support.py | 6 +++++- corporate/tests/test_support_views.py | 2 +- templates/corporate/support/realm_details.html | 8 ++++++-- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/corporate/lib/support.py b/corporate/lib/support.py index 4b4c4d0b31..749af924bc 100644 --- a/corporate/lib/support.py +++ b/corporate/lib/support.py @@ -23,7 +23,7 @@ from corporate.models.plans import CustomerPlan, CustomerPlanOffer, get_current_ from corporate.models.sponsorships import ZulipSponsorshipRequest from zerver.lib.timestamp import timestamp_to_datetime from zerver.models import Realm -from zerver.models.realm_audit_logs import AuditLogEventType +from zerver.models.realm_audit_logs import AuditLogEventType, RealmAuditLog from zerver.models.realms import get_org_type_display_name from zilencer.lib.remote_counts import MissingDataError from zilencer.models import ( @@ -127,6 +127,7 @@ class CloudSupportData: sponsorship_data: SponsorshipData user_data: UserData file_upload_usage: str + is_scrubbed: bool def get_stripe_customer_url(stripe_id: str) -> str: @@ -498,4 +499,7 @@ def get_data_for_cloud_support_view(billing_session: BillingSession) -> CloudSup sponsorship_data=sponsorship_data, user_data=user_data, file_upload_usage=get_formatted_realm_upload_space_used(billing_session.realm), + is_scrubbed=RealmAuditLog.objects.filter( + realm=billing_session.realm, event_type=AuditLogEventType.REALM_SCRUBBED + ).exists(), ) diff --git a/corporate/tests/test_support_views.py b/corporate/tests/test_support_views.py index 4c07175f76..3f4431ff13 100644 --- a/corporate/tests/test_support_views.py +++ b/corporate/tests/test_support_views.py @@ -751,7 +751,7 @@ class TestSupportEndpoint(ZulipTestCase): def test_realm_support_view_queries(self) -> None: iago = self.example_user("iago") self.login_user(iago) - with self.assert_database_query_count(22): + with self.assert_database_query_count(23): result = self.client_get("/activity/support", {"q": "zulip"}, subdomain="zulip") self.assertEqual(result.status_code, 200) diff --git a/templates/corporate/support/realm_details.html b/templates/corporate/support/realm_details.html index 6c8a99bc67..a072ab11ff 100644 --- a/templates/corporate/support/realm_details.html +++ b/templates/corporate/support/realm_details.html @@ -10,7 +10,10 @@ {% if realm_support_data[realm.id].sponsorship_data.has_discount %}

Has a discount 💸

{% endif %} - {% if realm.deactivated_redirect %} + {% set realm_is_scrubbed = realm_support_data[realm.id].is_scrubbed %} + {% if realm_is_scrubbed %} + Realm has been scrubbed + {% elif realm.deactivated_redirect %} Placeholder realm
Redirects to: {{ realm.deactivated_redirect }} @@ -69,7 +72,8 @@ File upload usage: {{ realm_support_data[realm.id].file_upload_usage }}
{% endif %} -{% if not realm.deactivated_redirect %} +{% if realm_is_scrubbed %} +{% elif not realm.deactivated_redirect %}

🛠️ Realm management: