templates: Update deactivated organization template for deleted data.

If a realm's data has been scrubbed, update the deactivated realm
to note the URL can be reused, but not that the realm can be
reactivated.

Updates the template for context variables that are no longer used.
This commit is contained in:
Lauryn Menard
2025-05-28 18:11:14 +02:00
committed by Tim Abbott
parent 0563a36b47
commit fd16c2e2b0
3 changed files with 46 additions and 14 deletions

View File

@@ -16,23 +16,24 @@
<div class="inline-block">
<div class="get-started">
{% if deactivated_redirect %}
<h1>{{ _("Organization moved") }}</h1>
{% else %}
<h1>{{ _("Deactivated organization") }}</h1>
{% endif %}
</div>
<div class="white-box deactivated-realm-container">
<p>
{% if deactivated_redirect %}
{% if realm_data_deleted %}
{{ _("This organization has been deactivated, and all organization data has been deleted.") }}
{% if corporate_enabled %}
{% trans %}
This organization has moved to <a href="{{ deactivated_redirect }}">{{ deactivated_redirect }}</a>.
You can <a href="mailto:{{ support_email }}">contact Zulip support</a> to inquire about reusing this URL for a new organization.
{% endtrans %}
{% else %}
{% trans %}
This organization has been deactivated.
You can <a href="mailto:{{ support_email }}">contact this Zulip server's administrators</a> to inquire about reusing this URL for a new organization.
{% endtrans %}
{% endif %}
{% else %}
{{ _("This organization has been deactivated.") }}
{% if corporate_enabled %}
{% trans %}
If you are an owner of this organization, you can <a href="mailto:{{ support_email }}">contact Zulip support</a> to reactivate it.

View File

@@ -24,8 +24,10 @@ from zerver.actions.create_realm import do_change_realm_subdomain, do_create_rea
from zerver.actions.create_user import add_new_user_history, do_create_user
from zerver.actions.default_streams import do_add_default_stream, do_create_default_stream_group
from zerver.actions.invites import do_invite_users
from zerver.actions.message_send import internal_send_private_message
from zerver.actions.realm_settings import (
do_deactivate_realm,
do_scrub_realm,
do_set_realm_authentication_methods,
do_set_realm_property,
do_set_realm_user_default_setting,
@@ -180,7 +182,7 @@ class DeactivationNoticeTestCase(ZulipTestCase):
result = self.client_get("/login/", follow=True)
self.assertEqual(result.redirect_chain[-1], ("/accounts/deactivated/", 302))
self.assertIn("This organization has been deactivated.", result.content.decode())
self.assertNotIn("It has moved to", result.content.decode())
self.assertNotIn("and all organization data has been deleted", result.content.decode())
def test_deactivation_notice_when_deactivated_and_deactivated_redirect_is_set(self) -> None:
realm = get_realm("zulip")
@@ -225,6 +227,30 @@ class DeactivationNoticeTestCase(ZulipTestCase):
result = self.client_get("/login/", follow=True)
self.assertIn(result.request.get("SERVER_NAME"), ["new-name-2.testserver"])
def test_deactivation_notice_when_deactivated_and_scrubbed(self) -> None:
# We expect system bot messages when scrubbing a realm.
internal_realm = get_realm(settings.SYSTEM_BOT_REALM)
notification_bot = get_system_bot(settings.NOTIFICATION_BOT, internal_realm.id)
hamlet = self.example_user("hamlet")
internal_send_private_message(notification_bot, hamlet, "test")
realm = get_realm("zulip")
do_deactivate_realm(
realm,
acting_user=None,
deactivation_reason="owner_request",
email_owners=False,
)
realm.refresh_from_db()
assert realm.deactivated
assert realm.deactivated_redirect is None
with self.assertLogs(level="WARNING"):
do_scrub_realm(realm, acting_user=None)
result = self.client_get("/login/", follow=True)
self.assertEqual(result.redirect_chain[-1], ("/accounts/deactivated/", 302))
self.assertIn("This organization has been deactivated,", result.content.decode())
self.assertIn("and all organization data has been deleted", result.content.decode())
class AddNewUserHistoryTest(ZulipTestCase):
def test_add_new_user_history_race(self) -> None:

View File

@@ -78,6 +78,7 @@ from zerver.models import (
UserProfile,
)
from zerver.models.prereg_users import filter_to_valid_prereg_users
from zerver.models.realm_audit_logs import AuditLogEventType, RealmAuditLog
from zerver.models.realms import get_realm
from zerver.models.users import remote_user_to_email
from zerver.signals import email_on_new_login
@@ -808,12 +809,16 @@ def redirect_to_misconfigured_ldap_notice(request: HttpRequest, error_type: int)
def show_deactivation_notice(request: HttpRequest, next: str = "/") -> HttpResponse:
realm = get_realm_from_request(request)
if realm and realm.deactivated:
context = {"deactivated_domain_name": realm.name}
if realm.deactivated_redirect is not None:
# URL hash is automatically preserved by the browser.
# See https://stackoverflow.com/a/5283739
redirect_to = get_safe_redirect_to(next, realm.deactivated_redirect)
return HttpResponseRedirect(redirect_to)
realm_data_scrubbed = RealmAuditLog.objects.filter(
realm=realm, event_type=AuditLogEventType.REALM_SCRUBBED
).exists()
context = {"realm_data_deleted": realm_data_scrubbed}
return render(request, "zerver/deactivated.html", context=context)
return HttpResponseRedirect(reverse("login_page"))