mirror of
https://github.com/zulip/zulip.git
synced 2025-11-04 14:03:30 +00:00
change_subdomain: Create a deactivated realm on updating subdomain.
When changing the subdomain of a realm, create a deactivated realm with the old subdomain of the realm, and set its deactivated_redirect to the new subdomain. Doing this will help us to do the following: - When a user visits the old subdomain of a realm, we can tell the user that the realm has been moved. - During the registration process, we can assure that the old subdomain of the realm is not used to create a new realm. If the subdomain is changed multiple times, the deactivated_redirect fields of all the deactivated realms are updated to point to the new uri.
This commit is contained in:
committed by
Alex Vandiver
parent
42dfd98607
commit
6c888977a6
@@ -856,9 +856,26 @@ def do_reactivate_realm(realm: Realm) -> None:
|
||||
}).decode())
|
||||
|
||||
def do_change_realm_subdomain(realm: Realm, new_subdomain: str) -> None:
|
||||
old_subdomain = realm.subdomain
|
||||
old_uri = realm.uri
|
||||
realm.string_id = new_subdomain
|
||||
realm.save(update_fields=["string_id"])
|
||||
|
||||
# If a realm if being renamed multiple times, we should find all the placeholder
|
||||
# realms and reset their deactivated_redirect field to point to the new realm uri
|
||||
placeholder_realms = Realm.objects.filter(deactivated_redirect=old_uri,
|
||||
deactivated=True)
|
||||
for placeholder_realm in placeholder_realms:
|
||||
do_add_deactivated_redirect(placeholder_realm, realm.uri)
|
||||
|
||||
# When we change a realm's subdomain the realm with old subdomain is basically
|
||||
# deactivated. We are creating a deactivated realm using old subdomain and setting
|
||||
# it's deactivated redirect to new_subdomain so that we can tell the users that
|
||||
# the realm has been moved to a new subdomain.
|
||||
placeholder_realm = do_create_realm(old_subdomain, "placeholder-realm")
|
||||
do_deactivate_realm(placeholder_realm)
|
||||
do_add_deactivated_redirect(placeholder_realm, realm.uri)
|
||||
|
||||
def do_add_deactivated_redirect(realm: Realm, redirect_url: str) -> None:
|
||||
realm.deactivated_redirect = redirect_url
|
||||
realm.save(update_fields=["deactivated_redirect"])
|
||||
|
||||
Reference in New Issue
Block a user