diff --git a/confirmation/models.py b/confirmation/models.py
index 42f67daabc..6740b30cb5 100644
--- a/confirmation/models.py
+++ b/confirmation/models.py
@@ -201,7 +201,7 @@ def confirmation_url(
url_args = dict(url_args)
url_args["confirmation_key"] = confirmation_key
return urljoin(
- settings.ROOT_DOMAIN_URI if realm is None else realm.uri,
+ settings.ROOT_DOMAIN_URI if realm is None else realm.url,
reverse(_properties[confirmation_type].url_name, kwargs=url_args),
)
diff --git a/corporate/lib/stripe.py b/corporate/lib/stripe.py
index 62cae5239d..c6590f9320 100644
--- a/corporate/lib/stripe.py
+++ b/corporate/lib/stripe.py
@@ -389,7 +389,7 @@ def payment_method_string(stripe_customer: stripe.Customer) -> str:
def build_support_url(support_view: str, query_text: str) -> str:
- support_realm_url = get_realm(settings.STAFF_SUBDOMAIN).uri
+ support_realm_url = get_realm(settings.STAFF_SUBDOMAIN).url
support_url = urljoin(support_realm_url, reverse(support_view))
query = urlencode({"q": query_text})
support_url = append_url_query_string(support_url, query)
@@ -3756,7 +3756,7 @@ class RealmBillingSession(BillingSession):
@override
@property
def billing_session_url(self) -> str:
- return self.realm.uri
+ return self.realm.url
@override
@property
@@ -5310,7 +5310,7 @@ def downgrade_small_realms_behind_on_payments_as_needed() -> None:
billing_session.downgrade_now_without_creating_additional_invoices()
billing_session.void_all_open_invoices()
context: Dict[str, Union[str, Realm]] = {
- "upgrade_url": f"{realm.uri}{reverse('upgrade_page')}",
+ "upgrade_url": f"{realm.url}{reverse('upgrade_page')}",
"realm": realm,
}
send_email_to_billing_admins_and_realm_owners(
diff --git a/corporate/lib/support.py b/corporate/lib/support.py
index 731188fa1c..2f08f552ad 100644
--- a/corporate/lib/support.py
+++ b/corporate/lib/support.py
@@ -112,9 +112,9 @@ class CloudSupportData:
def get_realm_support_url(realm: Realm) -> str:
- support_realm_uri = get_realm(settings.STAFF_SUBDOMAIN).uri
+ support_realm_url = get_realm(settings.STAFF_SUBDOMAIN).url
support_url = urljoin(
- support_realm_uri,
+ support_realm_url,
urlunsplit(("", "", reverse("support"), urlencode({"q": realm.string_id}), "")),
)
return support_url
diff --git a/corporate/views/portico.py b/corporate/views/portico.py
index 96ad79760f..9cbddcae12 100644
--- a/corporate/views/portico.py
+++ b/corporate/views/portico.py
@@ -336,7 +336,7 @@ def communities_view(request: HttpRequest) -> HttpResponse:
{
"id": realm.id,
"name": realm.name,
- "realm_url": realm.uri,
+ "realm_url": realm.url,
"logo_url": get_realm_icon_url(realm),
"description": get_realm_text_description(realm),
"org_type_key": org_type,
diff --git a/templates/corporate/support/realm_details.html b/templates/corporate/support/realm_details.html
index a277971fe1..56b92d0f9a 100644
--- a/templates/corporate/support/realm_details.html
+++ b/templates/corporate/support/realm_details.html
@@ -1,7 +1,7 @@
Cloud realm
{{ realm.name }}
-
URL :
{{ realm.uri }} |
+
URL :
{{ realm.url }} |
stats |
activity
Date created : {{ realm.date_created|timesince }} ago
diff --git a/templates/zerver/development/dev_login.html b/templates/zerver/development/dev_login.html
index fc762273f5..395a7f0aa3 100644
--- a/templates/zerver/development/dev_login.html
+++ b/templates/zerver/development/dev_login.html
@@ -25,7 +25,7 @@ page can be easily identified in it's respective JavaScript file -->
{% if realm_web_public_access_enabled %}
{{_('Anonymous user') }}
-
{% endif %}
@@ -33,7 +33,7 @@ page can be easily identified in it's respective JavaScript file -->
{% if direct_owners %}
{% for direct_owner in direct_owners %}
-
{% if direct_owner.realm.demo_organization_scheduled_deletion_date %}
{{ direct_owner.full_name }}
@@ -50,7 +50,7 @@ page can be easily identified in it's respective JavaScript file -->
{% if direct_admins %}
{% for direct_admin in direct_admins %}
-
{% endfor %}
@@ -61,7 +61,7 @@ page can be easily identified in it's respective JavaScript file -->
{% if direct_moderators %}
{% for direct_moderator in direct_moderators %}
-
{% endfor %}
@@ -72,7 +72,7 @@ page can be easily identified in it's respective JavaScript file -->
{% if guest_users %}
{% for guest_user in guest_users %}
-
{% endfor %}
@@ -86,7 +86,7 @@ page can be easily identified in it's respective JavaScript file -->
{% if direct_users %}
{% for direct_user in direct_users %}
-
{% endfor %}
diff --git a/templates/zerver/emails/find_team.html b/templates/zerver/emails/find_team.html
index 64f4d16e15..171b9c1753 100644
--- a/templates/zerver/emails/find_team.html
+++ b/templates/zerver/emails/find_team.html
@@ -16,7 +16,7 @@
diff --git a/templates/zerver/emails/find_team.txt b/templates/zerver/emails/find_team.txt
index 61057837a8..9f9a0fdb09 100644
--- a/templates/zerver/emails/find_team.txt
+++ b/templates/zerver/emails/find_team.txt
@@ -9,7 +9,7 @@
{% for realm in realms %}
-* {{ realm.name }}: {{ realm.uri }}
+* {{ realm.name }}: {{ realm.url }}
{% endfor %}
{% trans %}If you have trouble logging in, you can reset your password.{% endtrans %}
diff --git a/templates/zerver/emails/password_reset.html b/templates/zerver/emails/password_reset.html
index 4fc6a011b1..2c3dc07f0f 100644
--- a/templates/zerver/emails/password_reset.html
+++ b/templates/zerver/emails/password_reset.html
@@ -26,7 +26,7 @@
{{ _("You do have active accounts in the following organization(s).") }}
{% for active_account in active_accounts_in_other_realms %}
- {{ active_account.realm.uri }}
+ {{ active_account.realm.url }}
{% endfor %}
{% trans %}You can try logging in or resetting your password in the organization(s) above.{% endtrans %}
diff --git a/templates/zerver/emails/password_reset.txt b/templates/zerver/emails/password_reset.txt
index cdbb35be25..36a1377d97 100644
--- a/templates/zerver/emails/password_reset.txt
+++ b/templates/zerver/emails/password_reset.txt
@@ -21,7 +21,7 @@ You do not have an account in that Zulip organization.
{{ _("You do have active accounts in the following organization(s).") }}
{% for active_account in active_accounts_in_other_realms %}
-{{ active_account.realm.uri }}
+{{ active_account.realm.url }}
{% endfor %}
{% trans -%}
diff --git a/templates/zerver/emails/realm_auto_downgraded.html b/templates/zerver/emails/realm_auto_downgraded.html
index 85db0398e1..c37e036ab7 100644
--- a/templates/zerver/emails/realm_auto_downgraded.html
+++ b/templates/zerver/emails/realm_auto_downgraded.html
@@ -5,7 +5,7 @@
{% endblock %}
{% block content %}
- {% trans organization_name_with_link=macros.link_tag(realm.uri, realm.string_id) %}
+ {% trans organization_name_with_link=macros.link_tag(realm.url, realm.string_id) %}
Your organization, {{ organization_name_with_link }}, has been downgraded to the Zulip Cloud
Free plan because of unpaid invoices. The unpaid invoices have been voided.
{% endtrans %}
diff --git a/templates/zerver/emails/realm_auto_downgraded.txt b/templates/zerver/emails/realm_auto_downgraded.txt
index 2464239565..09a25eeece 100644
--- a/templates/zerver/emails/realm_auto_downgraded.txt
+++ b/templates/zerver/emails/realm_auto_downgraded.txt
@@ -1,4 +1,4 @@
-Your organization, {{ realm.uri }}, has been downgraded to the Zulip Cloud
+Your organization, {{ realm.url }}, has been downgraded to the Zulip Cloud
Free plan because of unpaid invoices. The unpaid invoices have been voided.
To continue on the Zulip Cloud Standard plan, please upgrade again by going
diff --git a/tools/generate-integration-docs-screenshot b/tools/generate-integration-docs-screenshot
index 1f471961b1..a81a966250 100755
--- a/tools/generate-integration-docs-screenshot
+++ b/tools/generate-integration-docs-screenshot
@@ -145,7 +145,7 @@ def send_bot_mock_message(
data, _, _ = get_fixture_info(fixture_path)
assert bot.bot_owner is not None
- url = f"{bot.bot_owner.realm.uri}"
+ url = f"{bot.bot_owner.realm.url}"
client = zulip.Client(email=bot.email, api_key=bot.api_key, site=url)
try:
@@ -180,7 +180,7 @@ def send_bot_payload_message(
assert isinstance(bot.bot_owner, UserProfile)
stream = integration.stream_name or "devel"
- url = f"{bot.bot_owner.realm.uri}/{integration.url}"
+ url = f"{bot.bot_owner.realm.url}/{integration.url}"
params = {"api_key": bot.api_key, "stream": stream}
params.update(config.extra_params)
@@ -226,7 +226,7 @@ def capture_last_message_screenshot(bot: UserProfile, image_path: str) -> None:
return
message_id = str(message.id)
screenshot_script = os.path.join(TOOLS_DIR, "message-screenshot.js")
- subprocess.check_call(["node", screenshot_script, message_id, image_path, realm.uri])
+ subprocess.check_call(["node", screenshot_script, message_id, image_path, realm.url])
def generate_screenshot_from_config(
diff --git a/zerver/actions/create_realm.py b/zerver/actions/create_realm.py
index 2a3f2b7287..5fd07999b9 100644
--- a/zerver/actions/create_realm.py
+++ b/zerver/actions/create_realm.py
@@ -57,7 +57,7 @@ def do_change_realm_subdomain(
experience for clients.
"""
old_subdomain = realm.subdomain
- old_uri = realm.uri
+ old_uri = realm.url
# If the realm had been a demo organization scheduled for
# deleting, clear that state.
realm.demo_organization_scheduled_deletion_date = None
@@ -73,10 +73,10 @@ def do_change_realm_subdomain(
)
# 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
+ # realms and reset their deactivated_redirect field to point to the new realm url
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)
+ do_add_deactivated_redirect(placeholder_realm, realm.url)
# The below block isn't executed in a transaction with the earlier code due to
# the functions called below being complex and potentially sending events,
@@ -88,7 +88,7 @@ def do_change_realm_subdomain(
if add_deactivated_redirect:
placeholder_realm = do_create_realm(old_subdomain, realm.name)
do_deactivate_realm(placeholder_realm, acting_user=None)
- do_add_deactivated_redirect(placeholder_realm, realm.uri)
+ do_add_deactivated_redirect(placeholder_realm, realm.url)
def set_realm_permissions_based_on_org_type(realm: Realm) -> None:
@@ -331,7 +331,7 @@ def do_create_realm(
support_url = get_realm_support_url(realm)
organization_type = get_org_type_display_name(realm.org_type)
- message = f"[{realm.name}]({support_url}) ([{realm.display_subdomain}]({realm.uri})). Organization type: {organization_type}"
+ message = f"[{realm.name}]({support_url}) ([{realm.display_subdomain}]({realm.url})). Organization type: {organization_type}"
topic_name = "new organizations"
try:
diff --git a/zerver/actions/realm_settings.py b/zerver/actions/realm_settings.py
index 4598e329ea..cadf78dceb 100644
--- a/zerver/actions/realm_settings.py
+++ b/zerver/actions/realm_settings.py
@@ -740,7 +740,7 @@ def do_send_realm_reactivation_email(realm: Realm, *, acting_user: Optional[User
)
context = {
"confirmation_url": url,
- "realm_uri": realm.uri,
+ "realm_uri": realm.url,
"realm_name": realm.name,
"corporate_enabled": settings.CORPORATE_ENABLED,
}
diff --git a/zerver/context_processors.py b/zerver/context_processors.py
index a6d1c52c80..62c31e829c 100644
--- a/zerver/context_processors.py
+++ b/zerver/context_processors.py
@@ -42,7 +42,7 @@ def common_context(user: UserProfile) -> Dict[str, Any]:
have a request.
"""
return {
- "realm_uri": user.realm.uri,
+ "realm_uri": user.realm.url,
"realm_name": user.realm.name,
"root_domain_url": settings.ROOT_DOMAIN_URI,
"external_url_scheme": settings.EXTERNAL_URI_SCHEME,
@@ -122,7 +122,7 @@ def zulip_default_context(request: HttpRequest) -> Dict[str, Any]:
realm_name = None
realm_icon = None
else:
- realm_uri = realm.uri
+ realm_uri = realm.url
realm_name = realm.name
realm_icon = get_realm_icon_url(realm)
diff --git a/zerver/forms.py b/zerver/forms.py
index 010bf360e2..fc02ebb91a 100644
--- a/zerver/forms.py
+++ b/zerver/forms.py
@@ -361,7 +361,7 @@ def generate_password_reset_url(
token = token_generator.make_token(user_profile)
uid = urlsafe_base64_encode(str(user_profile.id).encode())
endpoint = reverse("password_reset_confirm", kwargs=dict(uidb64=uid, token=token))
- return f"{user_profile.realm.uri}{endpoint}"
+ return f"{user_profile.realm.url}{endpoint}"
class ZulipPasswordResetForm(PasswordResetForm):
@@ -431,7 +431,7 @@ class ZulipPasswordResetForm(PasswordResetForm):
context = {
"email": email,
- "realm_uri": realm.uri,
+ "realm_uri": realm.url,
"realm_name": realm.name,
}
diff --git a/zerver/lib/avatar.py b/zerver/lib/avatar.py
index d46d7a7da0..d4a50e8539 100644
--- a/zerver/lib/avatar.py
+++ b/zerver/lib/avatar.py
@@ -135,7 +135,7 @@ def absolute_avatar_url(user_profile: UserProfile) -> str:
avatar = avatar_url(user_profile)
# avatar_url can return None if client_gravatar=True, however here we use the default value of False
assert avatar is not None
- return urljoin(user_profile.realm.uri, avatar)
+ return urljoin(user_profile.realm.url, avatar)
def is_avatar_new(ldap_avatar: bytes, user_profile: UserProfile) -> bool:
diff --git a/zerver/lib/email_notifications.py b/zerver/lib/email_notifications.py
index 4394bb8951..8142c52993 100644
--- a/zerver/lib/email_notifications.py
+++ b/zerver/lib/email_notifications.py
@@ -230,13 +230,13 @@ def build_message_list(
# structure of the URL to leverage. We can't use `relative_to_full_url()`
# function here because it uses a stricter regex which will not work for
# plain text.
- plain = re.sub(r"/user_uploads/(\S*)", user.realm.uri + r"/user_uploads/\1", plain)
+ plain = re.sub(r"/user_uploads/(\S*)", user.realm.url + r"/user_uploads/\1", plain)
plain = fix_spoilers_in_text(plain, user.default_language)
plain = add_quote_prefix_in_text(plain)
assert message.rendered_content is not None
fragment = lxml.html.fragment_fromstring(message.rendered_content, create_parent=True)
- relative_to_full_url(fragment, user.realm.uri)
+ relative_to_full_url(fragment, user.realm.url)
fix_emojis(fragment, user.emojiset)
fix_spoilers_in_html(fragment, user.default_language)
change_katex_to_raw_latex(fragment)
@@ -784,7 +784,7 @@ def send_account_registered_email(user: UserProfile, realm_creation: bool = Fals
return
from_name, from_address = welcome_sender_information()
- realm_url = user.realm.uri
+ realm_url = user.realm.url
account_registered_context = common_context(user)
account_registered_context.update(
@@ -845,7 +845,7 @@ def enqueue_welcome_emails(user: UserProfile, realm_creation: bool = False) -> N
.count()
)
unsubscribe_link = one_click_unsubscribe_link(user, "welcome")
- realm_url = user.realm.uri
+ realm_url = user.realm.url
# Any emails scheduled below should be added to the logic in get_onboarding_email_schedule
# to determine how long to delay sending the email based on when the user signed up.
diff --git a/zerver/lib/events.py b/zerver/lib/events.py
index 745537e3e7..283ecee64a 100644
--- a/zerver/lib/events.py
+++ b/zerver/lib/events.py
@@ -309,7 +309,7 @@ def fetch_initial_state_data(
state["realm_icon_source"] = realm.icon_source
add_realm_logo_fields(state, realm)
- state["realm_uri"] = realm.uri
+ state["realm_uri"] = realm.url
state["realm_bot_domain"] = realm.get_bot_domain()
state["realm_available_video_chat_providers"] = realm.VIDEO_CHAT_PROVIDERS
state["settings_send_digest_emails"] = settings.SEND_DIGEST_EMAILS
diff --git a/zerver/lib/markdown/__init__.py b/zerver/lib/markdown/__init__.py
index 4941c8376a..aecc3c8e77 100644
--- a/zerver/lib/markdown/__init__.py
+++ b/zerver/lib/markdown/__init__.py
@@ -2655,7 +2655,7 @@ def do_convert(
realm_alert_words_automaton=realm_alert_words_automaton,
mention_data=mention_data,
active_realm_emoji=active_realm_emoji,
- realm_uri=message_realm.uri,
+ realm_uri=message_realm.url,
sent_by_bot=sent_by_bot,
stream_names=stream_name_info,
translate_emoticons=translate_emoticons,
diff --git a/zerver/lib/onboarding.py b/zerver/lib/onboarding.py
index 699cfafe5a..dcfa60dd0e 100644
--- a/zerver/lib/onboarding.py
+++ b/zerver/lib/onboarding.py
@@ -52,14 +52,14 @@ def send_initial_direct_message(user: UserProfile) -> None:
# request and thus may not have the user's language context yet.
with override_language(user.default_language):
if education_organization:
- getting_started_help = user.realm.uri + "/help/using-zulip-for-a-class"
+ getting_started_help = user.realm.url + "/help/using-zulip-for-a-class"
getting_started_string = (
_(
"If you are new to Zulip, check out our [Using Zulip for a class guide]({getting_started_url})!"
)
).format(getting_started_url=getting_started_help)
else:
- getting_started_help = user.realm.uri + "/help/getting-started-with-zulip"
+ getting_started_help = user.realm.url + "/help/getting-started-with-zulip"
getting_started_string = (
_(
"If you are new to Zulip, check out our [Getting started guide]({getting_started_url})!"
@@ -70,7 +70,7 @@ def send_initial_direct_message(user: UserProfile) -> None:
# Add extra content on setting up a new organization for administrators.
if user.is_realm_admin:
if education_organization:
- organization_setup_help = user.realm.uri + "/help/setting-up-zulip-for-a-class"
+ organization_setup_help = user.realm.url + "/help/setting-up-zulip-for-a-class"
organization_setup_string = (
" "
+ _(
@@ -79,7 +79,7 @@ def send_initial_direct_message(user: UserProfile) -> None:
).format(organization_setup_url=organization_setup_help)
else:
organization_setup_help = (
- user.realm.uri + "/help/getting-your-organization-started-with-zulip"
+ user.realm.url + "/help/getting-your-organization-started-with-zulip"
)
organization_setup_string = (
" "
@@ -91,7 +91,7 @@ def send_initial_direct_message(user: UserProfile) -> None:
demo_organization_warning_string = ""
# Add extra content about automatic deletion for demo organization owners.
if user.is_realm_owner and user.realm.demo_organization_scheduled_deletion_date is not None:
- demo_organization_help = user.realm.uri + "/help/demo-organizations"
+ demo_organization_help = user.realm.url + "/help/demo-organizations"
demo_organization_warning_string = (
_(
"Note that this is a [demo organization]({demo_organization_help_url}) and will be "
diff --git a/zerver/lib/push_notifications.py b/zerver/lib/push_notifications.py
index 970fd32c4c..f359b22535 100644
--- a/zerver/lib/push_notifications.py
+++ b/zerver/lib/push_notifications.py
@@ -948,7 +948,7 @@ def get_base_payload(user_profile: UserProfile) -> Dict[str, Any]:
# These will let the app support logging into multiple realms and servers.
data["server"] = settings.EXTERNAL_HOST
data["realm_id"] = user_profile.realm.id
- data["realm_uri"] = user_profile.realm.uri
+ data["realm_uri"] = user_profile.realm.url
data["realm_name"] = user_profile.realm.name
data["user_id"] = user_profile.id
diff --git a/zerver/lib/remote_server.py b/zerver/lib/remote_server.py
index 9fd10697c7..1653bd62d1 100644
--- a/zerver/lib/remote_server.py
+++ b/zerver/lib/remote_server.py
@@ -365,7 +365,7 @@ def get_realms_info_for_push_bouncer(realm_id: Optional[int] = None) -> List[Rea
uuid=realm.uuid,
uuid_owner_secret=realm.uuid_owner_secret,
host=realm.host,
- url=realm.uri,
+ url=realm.url,
deactivated=realm.deactivated,
date_created=realm.date_created.timestamp(),
org_type=realm.org_type,
diff --git a/zerver/lib/scim.py b/zerver/lib/scim.py
index 0d4d2d5823..7b45fbe6ee 100644
--- a/zerver/lib/scim.py
+++ b/zerver/lib/scim.py
@@ -380,13 +380,13 @@ def base_scim_location_getter(request: HttpRequest, *args: Any, **kwargs: Any) -
Since SCIM synchronization is scoped to an individual realm, we
need these locations to be namespaced within the realm's domain
- namespace, which is conveniently accessed via realm.uri.
+ namespace, which is conveniently accessed via realm.url.
"""
realm = RequestNotes.get_notes(request).realm
assert realm is not None
- return realm.uri
+ return realm.url
class ConflictError(scim_exceptions.IntegrityError):
diff --git a/zerver/lib/send_email.py b/zerver/lib/send_email.py
index 5197c6a3fa..6740179d20 100644
--- a/zerver/lib/send_email.py
+++ b/zerver/lib/send_email.py
@@ -612,7 +612,7 @@ def send_custom_email(
context: Dict[str, object] = {
"realm": user_profile.realm,
"realm_string_id": user_profile.realm.string_id,
- "realm_uri": user_profile.realm.uri,
+ "realm_uri": user_profile.realm.url,
"realm_name": user_profile.realm.name,
}
if add_context is not None:
diff --git a/zerver/lib/upload/__init__.py b/zerver/lib/upload/__init__.py
index 3ef513dacc..309949df20 100644
--- a/zerver/lib/upload/__init__.py
+++ b/zerver/lib/upload/__init__.py
@@ -213,7 +213,7 @@ def handle_reupload_emojis_event(realm: Realm, logger: logging.Logger) -> None:
assert emoji_filename is not None
emoji_url = get_emoji_url(emoji_filename, realm_emoji.realm_id)
if emoji_url.startswith("/"):
- emoji_url = urljoin(realm_emoji.realm.uri, emoji_url)
+ emoji_url = urljoin(realm_emoji.realm.url, emoji_url)
emoji_file_content = get_emoji_file_content(session, emoji_url, realm_emoji.id, logger)
diff --git a/zerver/lib/upload/local.py b/zerver/lib/upload/local.py
index 4cd819deb0..0a18ef912a 100644
--- a/zerver/lib/upload/local.py
+++ b/zerver/lib/upload/local.py
@@ -269,7 +269,7 @@ class LocalUploadBackend(ZulipUploadBackend):
@override
def get_export_tarball_url(self, realm: Realm, export_path: str) -> str:
# export_path has a leading `/`
- return realm.uri + export_path
+ return realm.url + export_path
@override
def upload_export_tarball(
@@ -287,7 +287,7 @@ class LocalUploadBackend(ZulipUploadBackend):
abs_path = os.path.join(assert_is_not_none(settings.LOCAL_AVATARS_DIR), path)
os.makedirs(os.path.dirname(abs_path), exist_ok=True)
shutil.copy(tarball_path, abs_path)
- public_url = realm.uri + "/user_avatars/" + path
+ public_url = realm.url + "/user_avatars/" + path
return public_url
@override
diff --git a/zerver/lib/url_encoding.py b/zerver/lib/url_encoding.py
index 12986b502b..dde1a7e85b 100644
--- a/zerver/lib/url_encoding.py
+++ b/zerver/lib/url_encoding.py
@@ -22,7 +22,7 @@ def encode_stream(stream_id: int, stream_name: str) -> str:
def personal_narrow_url(*, realm: Realm, sender: UserProfile) -> str:
- base_url = f"{realm.uri}/#narrow/dm/"
+ base_url = f"{realm.url}/#narrow/dm/"
encoded_user_name = re2.sub(r'[ "%\/<>`\p{C}]+', "-", sender.full_name)
pm_slug = str(sender.id) + "-" + encoded_user_name
return base_url + pm_slug
@@ -32,17 +32,17 @@ def huddle_narrow_url(*, user: UserProfile, display_recipient: List[UserDisplayR
realm = user.realm
other_user_ids = [r["id"] for r in display_recipient if r["id"] != user.id]
pm_slug = ",".join(str(user_id) for user_id in sorted(other_user_ids)) + "-group"
- base_url = f"{realm.uri}/#narrow/dm/"
+ base_url = f"{realm.url}/#narrow/dm/"
return base_url + pm_slug
def stream_narrow_url(realm: Realm, stream: Stream) -> str:
- base_url = f"{realm.uri}/#narrow/stream/"
+ base_url = f"{realm.url}/#narrow/stream/"
return base_url + encode_stream(stream.id, stream.name)
def topic_narrow_url(*, realm: Realm, stream: Stream, topic_name: str) -> str:
- base_url = f"{realm.uri}/#narrow/stream/"
+ base_url = f"{realm.url}/#narrow/stream/"
return f"{base_url}{encode_stream(stream.id, stream.name)}/topic/{hash_util_encode(topic_name)}"
@@ -70,7 +70,7 @@ def near_stream_message_url(realm: Realm, message: Dict[str, Any]) -> str:
encoded_stream = encode_stream(stream_id=stream_id, stream_name=stream_name)
parts = [
- realm.uri,
+ realm.url,
"#narrow",
"stream",
encoded_stream,
@@ -92,7 +92,7 @@ def near_pm_message_url(realm: Realm, message: Dict[str, Any]) -> str:
pm_str = ",".join(str_user_ids) + "-pm"
parts = [
- realm.uri,
+ realm.url,
"#narrow",
"dm",
pm_str,
diff --git a/zerver/management/commands/list_realms.py b/zerver/management/commands/list_realms.py
index 51b2b993e1..696b936010 100644
--- a/zerver/management/commands/list_realms.py
+++ b/zerver/management/commands/list_realms.py
@@ -39,12 +39,12 @@ Usage examples:
if realm.deactivated:
print(
self.style.ERROR(
- outer_format.format(realm.id, display_string_id, realm.name, realm.uri)
+ outer_format.format(realm.id, display_string_id, realm.name, realm.url)
)
)
deactivated = True
else:
- print(outer_format.format(realm.id, display_string_id, realm.name, realm.uri))
+ print(outer_format.format(realm.id, display_string_id, realm.name, realm.url))
if deactivated:
print(self.style.WARNING("\nRed rows represent deactivated realms."))
sys.exit(0)
diff --git a/zerver/management/commands/send_password_reset_email.py b/zerver/management/commands/send_password_reset_email.py
index 8cab2a7bbc..72e8693df3 100644
--- a/zerver/management/commands/send_password_reset_email.py
+++ b/zerver/management/commands/send_password_reset_email.py
@@ -62,7 +62,7 @@ class Command(ZulipBaseCommand):
context = {
"email": user_profile.delivery_email,
"reset_url": generate_password_reset_url(user_profile, default_token_generator),
- "realm_uri": user_profile.realm.uri,
+ "realm_uri": user_profile.realm.url,
"realm_name": user_profile.realm.name,
"active_account_in_realm": True,
}
diff --git a/zerver/middleware.py b/zerver/middleware.py
index ec75a91fdb..d7f8b7ec1f 100644
--- a/zerver/middleware.py
+++ b/zerver/middleware.py
@@ -579,7 +579,7 @@ class HostDomainMiddleware(MiddlewareMixin):
formal_host = request_notes.realm.host
if host != formal_host and not host.startswith(formal_host + ":"):
return HttpResponseRedirect(
- urljoin(request_notes.realm.uri, request.get_full_path())
+ urljoin(request_notes.realm.url, request.get_full_path())
)
return None
diff --git a/zerver/migrations/0373_fix_deleteduser_dummies.py b/zerver/migrations/0373_fix_deleteduser_dummies.py
index d08a3f280e..787c3cff88 100644
--- a/zerver/migrations/0373_fix_deleteduser_dummies.py
+++ b/zerver/migrations/0373_fix_deleteduser_dummies.py
@@ -45,7 +45,7 @@ def fix_dummy_users(apps: StateApps, schema_editor: BaseDatabaseSchemaEditor) ->
"""
do_delete_users had two bugs:
1. Creating the replacement dummy users with active=True
- 2. Creating the replacement dummy users with email domain set to realm.uri,
+ 2. Creating the replacement dummy users with email domain set to realm.url,
which may not be a valid email domain.
Prior commits fixed the bugs, and this migration fixes the pre-existing objects.
"""
diff --git a/zerver/migrations/0501_delete_dangling_usermessages.py b/zerver/migrations/0501_delete_dangling_usermessages.py
index 57b16eb38a..56e1995964 100644
--- a/zerver/migrations/0501_delete_dangling_usermessages.py
+++ b/zerver/migrations/0501_delete_dangling_usermessages.py
@@ -157,7 +157,7 @@ def log_extra_usermessage_rows(apps: StateApps, schema_editor: BaseDatabaseSchem
for message in messages:
realm = message.realm
- # Reimplement realm.uri
+ # Reimplement realm.url
if realm.string_id == "":
hostname = settings.EXTERNAL_HOST
else:
diff --git a/zerver/models/realms.py b/zerver/models/realms.py
index aa1e12f034..56880dc6e1 100644
--- a/zerver/models/realms.py
+++ b/zerver/models/realms.py
@@ -898,7 +898,7 @@ class Realm(models.Model): # type: ignore[django-manager-missing] # django-stub
return self.string_id
@property
- def uri(self) -> str:
+ def url(self) -> str:
return settings.EXTERNAL_URI_SCHEME + self.host
@property
diff --git a/zerver/openapi/test_curl_examples.py b/zerver/openapi/test_curl_examples.py
index 11eb20e1eb..8dc8623152 100644
--- a/zerver/openapi/test_curl_examples.py
+++ b/zerver/openapi/test_curl_examples.py
@@ -36,7 +36,7 @@ def test_generated_curl_examples_for_success(client: Client) -> None:
# A limited Markdown engine that just processes the code example syntax.
realm = get_realm("zulip")
md_engine = markdown.Markdown(
- extensions=[markdown_extension.makeExtension(api_url=realm.uri + "/api")]
+ extensions=[markdown_extension.makeExtension(api_url=realm.url + "/api")]
)
# We run our curl tests in alphabetical order (except that we
diff --git a/zerver/tests/test_auth_backends.py b/zerver/tests/test_auth_backends.py
index 6ef308ae78..a0414ababb 100644
--- a/zerver/tests/test_auth_backends.py
+++ b/zerver/tests/test_auth_backends.py
@@ -1166,7 +1166,7 @@ class SocialAuthBase(DesktopFlowTestingLib, ZulipTestCase, ABC):
self.assertEqual(result.status_code, 302)
self.assertEqual(
result["Location"],
- f"{user_profile.realm.uri}/login/?"
+ f"{user_profile.realm.url}/login/?"
+ urlencode({"is_deactivated": user_profile.delivery_email}),
)
self.assertEqual(
@@ -1215,7 +1215,7 @@ class SocialAuthBase(DesktopFlowTestingLib, ZulipTestCase, ABC):
],
)
self.assertEqual(result.status_code, 302)
- self.assertEqual(result["Location"], realm.uri + "/register/")
+ self.assertEqual(result["Location"], realm.url + "/register/")
def test_user_cannot_log_into_nonexisting_realm(self) -> None:
account_data_dict = self.get_account_data_dict(email=self.email, name=self.name)
@@ -2842,7 +2842,7 @@ class SAMLAuthBackendTest(SocialAuthBase):
warn_log.output, [self.logger_output("SAML got invalid email argument.", "warning")]
)
self.assertEqual(result.status_code, 302)
- self.assertEqual(result["Location"], realm.uri + "/register/")
+ self.assertEqual(result["Location"], realm.url + "/register/")
def test_social_auth_saml_multiple_idps_configured(self) -> None:
# Set up a new SOCIAL_AUTH_SAML_ENABLED_IDPS dict with two idps.
@@ -3984,7 +3984,7 @@ class GitHubAuthBackendTest(SocialAuthBase):
account_data_dict, subdomain=subdomain, email_data=email_data
)
self.assertEqual(result.status_code, 302)
- self.assertEqual(result["Location"], realm.uri + "/login/")
+ self.assertEqual(result["Location"], realm.url + "/login/")
self.assertEqual(
m.output,
[
@@ -4006,7 +4006,7 @@ class GitHubAuthBackendTest(SocialAuthBase):
), self.assertLogs(self.logger_string, level="INFO") as mock_info:
result = self.social_auth_test(account_data_dict, subdomain=subdomain)
self.assertEqual(result.status_code, 302)
- self.assertEqual(result["Location"], realm.uri + "/login/")
+ self.assertEqual(result["Location"], realm.url + "/login/")
self.assertEqual(
mock_info.output,
[
@@ -4042,7 +4042,7 @@ class GitHubAuthBackendTest(SocialAuthBase):
), self.assertLogs(self.logger_string, level="INFO") as mock_info:
result = self.social_auth_test(account_data_dict, subdomain=subdomain)
self.assertEqual(result.status_code, 302)
- self.assertEqual(result["Location"], realm.uri + "/login/")
+ self.assertEqual(result["Location"], realm.url + "/login/")
self.assertEqual(
mock_info.output,
[
@@ -4292,7 +4292,7 @@ class GitHubAuthBackendTest(SocialAuthBase):
email_data=email_data,
)
self.assertEqual(result.status_code, 302)
- self.assertEqual(result["Location"], realm.uri + "/login/")
+ self.assertEqual(result["Location"], realm.url + "/login/")
self.assertEqual(
m.output,
[
@@ -4345,7 +4345,7 @@ class GitHubAuthBackendTest(SocialAuthBase):
email_data=email_data,
)
self.assertEqual(result.status_code, 302)
- self.assertEqual(result["Location"], realm.uri + "/login/")
+ self.assertEqual(result["Location"], realm.url + "/login/")
self.assertEqual(
m.output,
[
@@ -4377,7 +4377,7 @@ class GitHubAuthBackendTest(SocialAuthBase):
email_data=email_data,
)
self.assertEqual(result.status_code, 302)
- self.assertEqual(result["Location"], realm.uri + "/login/")
+ self.assertEqual(result["Location"], realm.url + "/login/")
self.assertEqual(
m.output,
[
@@ -4433,7 +4433,7 @@ class GoogleAuthBackendTest(SocialAuthBase):
with self.assertLogs(self.logger_string, level="WARNING") as m:
result = self.social_auth_test(account_data_dict, subdomain=subdomain)
self.assertEqual(result.status_code, 302)
- self.assertEqual(result["Location"], realm.uri + "/login/")
+ self.assertEqual(result["Location"], realm.url + "/login/")
self.assertEqual(
m.output,
[
@@ -5341,7 +5341,7 @@ class TestTwoFactor(ZulipTestCase):
self.assertEqual(result.status_code, 302)
self.assertEqual(result["Location"], "http://zulip.testserver")
- # Going to login page should redirect to `realm.uri` if user is
+ # Going to login page should redirect to `realm.url` if user is
# already logged in.
result = self.client_get("/accounts/login/")
self.assertEqual(result.status_code, 302)
diff --git a/zerver/tests/test_middleware.py b/zerver/tests/test_middleware.py
index e701719b68..446cb4c891 100644
--- a/zerver/tests/test_middleware.py
+++ b/zerver/tests/test_middleware.py
@@ -207,7 +207,7 @@ class OpenGraphTest(ZulipTestCase):
open_graph_image = assert_is_not_none(bs.select_one('meta[property="og:image"]')).get(
"content"
)
- self.assertEqual(open_graph_image, f"{realm.uri}{realm_icon}")
+ self.assertEqual(open_graph_image, f"{realm.url}{realm_icon}")
def test_login_page_realm_icon_absolute_url(self) -> None:
realm = get_realm("zulip")
diff --git a/zerver/tests/test_push_notifications.py b/zerver/tests/test_push_notifications.py
index 326c321b9a..ef6a3b1062 100644
--- a/zerver/tests/test_push_notifications.py
+++ b/zerver/tests/test_push_notifications.py
@@ -774,7 +774,7 @@ class PushBouncerNotificationTest(BouncerTestCase):
"sender_id": hamlet.id,
"server": settings.EXTERNAL_HOST,
"realm_id": hamlet.realm.id,
- "realm_uri": hamlet.realm.uri,
+ "realm_uri": hamlet.realm.url,
"user_id": self.example_user("othello").id,
}
},
@@ -789,7 +789,7 @@ class PushBouncerNotificationTest(BouncerTestCase):
"content_truncated": False,
"server": settings.EXTERNAL_HOST,
"realm_id": hamlet.realm.id,
- "realm_uri": hamlet.realm.uri,
+ "realm_uri": hamlet.realm.url,
"sender_id": hamlet.id,
"sender_email": hamlet.email,
"sender_full_name": "King Hamlet",
@@ -3952,7 +3952,7 @@ class TestGetAPNsPayload(PushNotificationTest):
"server": settings.EXTERNAL_HOST,
"realm_id": self.sender.realm.id,
"realm_name": self.sender.realm.name,
- "realm_uri": self.sender.realm.uri,
+ "realm_uri": self.sender.realm.url,
"user_id": user_profile.id,
"time": datetime_to_timestamp(message.date_sent),
},
@@ -3996,7 +3996,7 @@ class TestGetAPNsPayload(PushNotificationTest):
"server": settings.EXTERNAL_HOST,
"realm_id": self.sender.realm.id,
"realm_name": self.sender.realm.name,
- "realm_uri": self.sender.realm.uri,
+ "realm_uri": self.sender.realm.url,
"user_id": user_profile.id,
"time": datetime_to_timestamp(message.date_sent),
},
@@ -4029,7 +4029,7 @@ class TestGetAPNsPayload(PushNotificationTest):
"server": settings.EXTERNAL_HOST,
"realm_id": self.sender.realm.id,
"realm_name": self.sender.realm.name,
- "realm_uri": self.sender.realm.uri,
+ "realm_uri": self.sender.realm.url,
"user_id": self.sender.id,
"time": datetime_to_timestamp(message.date_sent),
},
@@ -4068,7 +4068,7 @@ class TestGetAPNsPayload(PushNotificationTest):
"server": settings.EXTERNAL_HOST,
"realm_id": self.sender.realm.id,
"realm_name": self.sender.realm.name,
- "realm_uri": self.sender.realm.uri,
+ "realm_uri": self.sender.realm.url,
"user_id": user_profile.id,
"time": datetime_to_timestamp(message.date_sent),
},
@@ -4106,7 +4106,7 @@ class TestGetAPNsPayload(PushNotificationTest):
"server": settings.EXTERNAL_HOST,
"realm_id": self.sender.realm.id,
"realm_name": self.sender.realm.name,
- "realm_uri": self.sender.realm.uri,
+ "realm_uri": self.sender.realm.url,
"user_id": user_profile.id,
"mentioned_user_group_id": user_group.id,
"mentioned_user_group_name": user_group.name,
@@ -4145,7 +4145,7 @@ class TestGetAPNsPayload(PushNotificationTest):
"server": settings.EXTERNAL_HOST,
"realm_id": self.sender.realm.id,
"realm_name": self.sender.realm.name,
- "realm_uri": self.sender.realm.uri,
+ "realm_uri": self.sender.realm.url,
"user_id": user_profile.id,
"time": datetime_to_timestamp(message.date_sent),
},
@@ -4207,7 +4207,7 @@ class TestGetAPNsPayload(PushNotificationTest):
"server": settings.EXTERNAL_HOST,
"realm_id": self.sender.realm.id,
"realm_name": self.sender.realm.name,
- "realm_uri": self.sender.realm.uri,
+ "realm_uri": self.sender.realm.url,
"user_id": user_profile.id,
"time": datetime_to_timestamp(message.date_sent),
},
@@ -4257,7 +4257,7 @@ class TestGetAPNsPayload(PushNotificationTest):
"server": settings.EXTERNAL_HOST,
"realm_id": hamlet.realm.id,
"realm_name": hamlet.realm.name,
- "realm_uri": hamlet.realm.uri,
+ "realm_uri": hamlet.realm.url,
"user_id": polonius.id,
"time": datetime_to_timestamp(message.date_sent),
}
@@ -4296,7 +4296,7 @@ class TestGetGCMPayload(PushNotificationTest):
"server": settings.EXTERNAL_HOST,
"realm_id": hamlet.realm.id,
"realm_name": hamlet.realm.name,
- "realm_uri": hamlet.realm.uri,
+ "realm_uri": hamlet.realm.url,
"sender_id": hamlet.id,
"sender_email": hamlet.email,
"sender_full_name": "King Hamlet",
@@ -4355,7 +4355,7 @@ class TestGetGCMPayload(PushNotificationTest):
"server": settings.EXTERNAL_HOST,
"realm_id": hamlet.realm.id,
"realm_name": hamlet.realm.name,
- "realm_uri": hamlet.realm.uri,
+ "realm_uri": hamlet.realm.url,
"sender_id": hamlet.id,
"sender_email": hamlet.email,
"sender_full_name": "King Hamlet",
@@ -4388,7 +4388,7 @@ class TestGetGCMPayload(PushNotificationTest):
"server": settings.EXTERNAL_HOST,
"realm_id": hamlet.realm.id,
"realm_name": hamlet.realm.name,
- "realm_uri": hamlet.realm.uri,
+ "realm_uri": hamlet.realm.url,
"sender_id": hamlet.id,
"sender_email": hamlet.email,
"sender_full_name": "King Hamlet",
@@ -4438,7 +4438,7 @@ class TestGetGCMPayload(PushNotificationTest):
"server": settings.EXTERNAL_HOST,
"realm_id": hamlet.realm.id,
"realm_name": hamlet.realm.name,
- "realm_uri": hamlet.realm.uri,
+ "realm_uri": hamlet.realm.url,
"sender_id": hamlet.id,
"sender_email": f"user{hamlet.id}@zulip.testserver",
"sender_full_name": "Unknown user",
diff --git a/zerver/tests/test_realm.py b/zerver/tests/test_realm.py
index e42494df92..0b63ccd4bc 100644
--- a/zerver/tests/test_realm.py
+++ b/zerver/tests/test_realm.py
@@ -322,7 +322,7 @@ class RealmTest(ZulipTestCase):
placeholder_realm = get_realm("zulip")
self.assertTrue(placeholder_realm.deactivated)
- self.assertEqual(placeholder_realm.deactivated_redirect, user.realm.uri)
+ self.assertEqual(placeholder_realm.deactivated_redirect, user.realm.url)
realm_audit_log = RealmAuditLog.objects.filter(
event_type=RealmAuditLog.REALM_SUBDOMAIN_CHANGED, acting_user=iago
diff --git a/zerver/tests/test_realm_export.py b/zerver/tests/test_realm_export.py
index 828fb8ac7e..4dd16e8ed5 100644
--- a/zerver/tests/test_realm_export.py
+++ b/zerver/tests/test_realm_export.py
@@ -177,7 +177,7 @@ class RealmExportTest(ZulipTestCase):
# Test that the export we have is the export we created.
export_dict = response_dict["exports"]
self.assertEqual(export_dict[0]["id"], audit_log_entry.id)
- self.assertEqual(export_dict[0]["export_url"], admin.realm.uri + export_path)
+ self.assertEqual(export_dict[0]["export_url"], admin.realm.url + export_path)
self.assertEqual(export_dict[0]["acting_user_id"], admin.id)
self.assert_length(
export_dict,
diff --git a/zerver/tests/test_signup.py b/zerver/tests/test_signup.py
index 589cbebaf9..087523d407 100644
--- a/zerver/tests/test_signup.py
+++ b/zerver/tests/test_signup.py
@@ -795,7 +795,7 @@ class LoginTest(ZulipTestCase):
realm = user_profile.realm
self.assertTrue(email_auth_enabled(realm))
- url = f"{realm.uri}/login/?" + urlencode({"is_deactivated": user_profile.delivery_email})
+ url = f"{realm.url}/login/?" + urlencode({"is_deactivated": user_profile.delivery_email})
result = self.client_get(url)
self.assertEqual(result.status_code, 200)
self.assert_in_response(
@@ -2143,7 +2143,7 @@ class UserSignUpTest(ZulipTestCase):
# Verify that we were served a redirect to the app.
self.assertEqual(result.status_code, 302)
- self.assertEqual(result["Location"], f"{realm.uri}/")
+ self.assertEqual(result["Location"], f"{realm.url}/")
# Verify that we successfully logged in.
user_profile = get_user_by_delivery_email(email, realm)
@@ -4208,7 +4208,7 @@ class TestLoginPage(ZulipTestCase):
result = self.client_get("/login/", {"next": "/upgrade/"})
self.assertEqual(result.status_code, 302)
- self.assertEqual(result["Location"], f"{hamlet.realm.uri}/upgrade/")
+ self.assertEqual(result["Location"], f"{hamlet.realm.url}/upgrade/")
@patch("django.http.HttpRequest.get_host")
def test_login_page_works_without_subdomains(self, mock_get_host: MagicMock) -> None:
@@ -4250,7 +4250,7 @@ class TestLoginPage(ZulipTestCase):
session.save()
result = self.client_get("http://auth.testserver/login/")
self.assertEqual(result.status_code, 302)
- self.assertEqual(result["Location"], zulip_realm.uri)
+ self.assertEqual(result["Location"], zulip_realm.url)
session = self.client.session
session["subdomain"] = "invalid"
diff --git a/zerver/tests/test_subdomains.py b/zerver/tests/test_subdomains.py
index 1c2c7956e5..e6047b07e0 100644
--- a/zerver/tests/test_subdomains.py
+++ b/zerver/tests/test_subdomains.py
@@ -72,9 +72,9 @@ class SubdomainsTest(ZulipTestCase):
self.assertTrue(test("/anything"))
self.assertFalse(test("https://zulip.com"))
self.assertFalse(test("http://zulip.com"))
- self.assertTrue(test(f"{realm.uri}"))
+ self.assertTrue(test(f"{realm.url}"))
- self.assertFalse(test(f"{realm.uri}@www.google.com"))
+ self.assertFalse(test(f"{realm.url}@www.google.com"))
# We don't have an existing configuration STATIC_URL with this
# format, but it's worth testing in case that changes.
@@ -84,7 +84,7 @@ class SubdomainsTest(ZulipTestCase):
self.assertTrue(test(f"{settings.STATIC_URL}/x"))
self.assertFalse(test(evil_url))
self.assertFalse(test(f"{evil_url}/x"))
- self.assertTrue(test(f"{realm.uri}"))
+ self.assertTrue(test(f"{realm.url}"))
self.assertTrue(test("/static/images/logo/zulip-org-logo.svg"))
self.assertTrue(test("/anything"))
diff --git a/zerver/views/auth.py b/zerver/views/auth.py
index 24fc55034b..b448f16a5e 100644
--- a/zerver/views/auth.py
+++ b/zerver/views/auth.py
@@ -394,7 +394,7 @@ def login_or_register_remote_user(request: HttpRequest, result: ExternalAuthResu
if is_free_trial_offer_enabled(False):
redirect_to = reverse("upgrade_page")
- redirect_to = get_safe_redirect_to(redirect_to, user_profile.realm.uri)
+ redirect_to = get_safe_redirect_to(redirect_to, user_profile.realm.url)
return HttpResponseRedirect(redirect_to)
@@ -460,7 +460,7 @@ def finish_mobile_flow(request: HttpRequest, user_profile: UserProfile, otp: str
def create_response_for_otp_flow(
key: str, otp: str, user_profile: UserProfile, encrypted_key_field_name: str
) -> HttpResponse:
- realm_uri = user_profile.realm.uri
+ realm_uri = user_profile.realm.url
# Check if the mobile URI is overridden in settings, if so, replace it
# This block should only apply to the mobile flow, so we if add others, this
@@ -747,7 +747,7 @@ def log_into_subdomain(request: HttpRequest, token: str) -> HttpResponse:
def redirect_and_log_into_subdomain(result: ExternalAuthResult) -> HttpResponse:
token = result.store_data()
realm = get_realm(result.data_dict["subdomain"])
- subdomain_login_uri = realm.uri + reverse(log_into_subdomain, args=[token])
+ subdomain_login_uri = realm.url + reverse(log_into_subdomain, args=[token])
return redirect(subdomain_login_uri)
@@ -809,7 +809,7 @@ class TwoFactorLoginView(BaseTwoFactorLoginView):
update_login_page_context(self.request, context)
realm = get_realm_from_request(self.request)
- redirect_to = realm.uri if realm else "/"
+ redirect_to = realm.url if realm else "/"
context["next"] = self.request.POST.get(
"next",
self.request.GET.get("next", redirect_to),
@@ -821,9 +821,9 @@ class TwoFactorLoginView(BaseTwoFactorLoginView):
Log in the user and redirect to the desired page.
We need to override this function so that we can redirect to
- realm.uri instead of '/'.
+ realm.url instead of '/'.
"""
- realm_uri = self.get_user().realm.uri
+ realm_uri = self.get_user().realm.url
# This mock.patch business is an unpleasant hack that we'd
# ideally like to remove by instead patching the upstream
# module to support better configurability of the
@@ -852,10 +852,10 @@ def login_page(
is_preview = "preview" in request.GET
if settings.TWO_FACTOR_AUTHENTICATION_ENABLED:
if request.user.is_authenticated and is_2fa_verified(request.user):
- redirect_to = get_safe_redirect_to(next, request.user.realm.uri)
+ redirect_to = get_safe_redirect_to(next, request.user.realm.url)
return HttpResponseRedirect(redirect_to)
elif request.user.is_authenticated and not is_preview:
- redirect_to = get_safe_redirect_to(next, request.user.realm.uri)
+ redirect_to = get_safe_redirect_to(next, request.user.realm.url)
return HttpResponseRedirect(redirect_to)
if is_subdomain_root_or_alias(request) and settings.ROOT_DOMAIN_LANDING_PAGE:
redirect_url = reverse("realm_redirect")
@@ -882,7 +882,7 @@ def login_page(
if realm and "new_realm" in request.POST:
# If we're switching realms, redirect to that realm, but
# only if it actually exists.
- return HttpResponseRedirect(realm.uri)
+ return HttpResponseRedirect(realm.url)
if "username" in request.POST:
extra_context["email"] = request.POST["username"]
@@ -917,7 +917,7 @@ def social_auth_subdomain_login_page(request: HttpRequest) -> HttpResponse:
if origin_subdomain is not None:
try:
origin_realm = get_realm(origin_subdomain)
- return HttpResponseRedirect(origin_realm.uri)
+ return HttpResponseRedirect(origin_realm.url)
except Realm.DoesNotExist:
pass
diff --git a/zerver/views/development/dev_login.py b/zerver/views/development/dev_login.py
index f26296c47c..b7ed35b9c9 100644
--- a/zerver/views/development/dev_login.py
+++ b/zerver/views/development/dev_login.py
@@ -83,7 +83,7 @@ def dev_direct_login(
realm = get_realm(subdomain)
if request.POST.get("prefers_web_public_view") == "Anonymous login":
- redirect_to = get_safe_redirect_to(next, realm.uri)
+ redirect_to = get_safe_redirect_to(next, realm.url)
return HttpResponseRedirect(redirect_to)
email = request.POST["direct_email"]
@@ -93,7 +93,7 @@ def dev_direct_login(
assert isinstance(user_profile, UserProfile)
do_login(request, user_profile)
- redirect_to = get_safe_redirect_to(next, user_profile.realm.uri)
+ redirect_to = get_safe_redirect_to(next, user_profile.realm.url)
return HttpResponseRedirect(redirect_to)
@@ -154,12 +154,12 @@ def api_dev_list_users(request: HttpRequest) -> HttpResponse:
request,
data=dict(
direct_admins=[
- dict(email=u.delivery_email, realm_uri=u.realm.uri)
+ dict(email=u.delivery_email, realm_uri=u.realm.url)
for u in users
if u.is_realm_admin
],
direct_users=[
- dict(email=u.delivery_email, realm_uri=u.realm.uri)
+ dict(email=u.delivery_email, realm_uri=u.realm.url)
for u in users
if not u.is_realm_admin
],
diff --git a/zerver/views/realm.py b/zerver/views/realm.py
index 830d1bb9a2..ee6438e619 100644
--- a/zerver/views/realm.py
+++ b/zerver/views/realm.py
@@ -463,7 +463,7 @@ def update_realm(
raise JsonableError(str(err.message))
do_change_realm_subdomain(realm, string_id, acting_user=user_profile)
- data["realm_uri"] = realm.uri
+ data["realm_uri"] = realm.url
if org_type is not None:
do_change_realm_org_type(realm, org_type, acting_user=user_profile)
diff --git a/zerver/views/registration.py b/zerver/views/registration.py
index 2812c30077..1d870a4bf6 100644
--- a/zerver/views/registration.py
+++ b/zerver/views/registration.py
@@ -757,7 +757,7 @@ def login_and_go_to_home(request: HttpRequest, user_profile: UserProfile) -> Htt
do_login(request, user_profile)
# Using 'mark_sanitized' to work around false positive where Pysa thinks
# that 'user_profile' is user-controlled
- return HttpResponseRedirect(mark_sanitized(user_profile.realm.uri) + reverse("home"))
+ return HttpResponseRedirect(mark_sanitized(user_profile.realm.url) + reverse("home"))
def prepare_activation_url(
@@ -1216,7 +1216,7 @@ def realm_redirect(request: HttpRequest, next: str = REQ(default="")) -> HttpRes
if form.is_valid():
subdomain = form.cleaned_data["subdomain"]
realm = get_realm(subdomain)
- redirect_to = urljoin(realm.uri, settings.HOME_NOT_LOGGED_IN)
+ redirect_to = urljoin(realm.url, settings.HOME_NOT_LOGGED_IN)
if next:
redirect_to = append_url_query_string(
diff --git a/zerver/views/users.py b/zerver/views/users.py
index 37780238b5..dca602c21a 100644
--- a/zerver/views/users.py
+++ b/zerver/views/users.py
@@ -168,7 +168,7 @@ def _deactivate_user_profile_backend(
from_address=FromAddress.NOREPLY,
context={
"deactivation_notification_comment": deactivation_notification_comment,
- "realm_uri": target.realm.uri,
+ "realm_uri": target.realm.url,
"realm_name": target.realm.name,
},
)
diff --git a/zerver/views/video_calls.py b/zerver/views/video_calls.py
index 9842871dfb..3c39fcdacc 100644
--- a/zerver/views/video_calls.py
+++ b/zerver/views/video_calls.py
@@ -109,7 +109,7 @@ def complete_zoom_user(
),
) -> HttpResponse:
if get_subdomain(request) != state["realm"]:
- return redirect(urljoin(get_realm(state["realm"]).uri, request.get_full_path()))
+ return redirect(urljoin(get_realm(state["realm"]).url, request.get_full_path()))
return complete_zoom_user_in_realm(request)
diff --git a/zilencer/management/commands/populate_billing_realms.py b/zilencer/management/commands/populate_billing_realms.py
index d7ad80d8d7..160a5864bc 100644
--- a/zilencer/management/commands/populate_billing_realms.py
+++ b/zilencer/management/commands/populate_billing_realms.py
@@ -578,5 +578,5 @@ def populate_remote_realms(customer_profile: CustomerProfile) -> Dict[str, str]:
return {
"unique_id": customer_profile.unique_id,
- "login_url": local_realm.uri + "/self-hosted-billing/",
+ "login_url": local_realm.url + "/self-hosted-billing/",
}
diff --git a/zproject/backends.py b/zproject/backends.py
index c361be3e4a..aad3f49a8d 100644
--- a/zproject/backends.py
+++ b/zproject/backends.py
@@ -1620,13 +1620,13 @@ class ZulipRemoteUserBackend(ZulipAuthMixin, RemoteUserBackend, ExternalAuthMeth
def redirect_to_signup(realm: Realm) -> HttpResponseRedirect:
signup_url = reverse("register")
- redirect_url = realm.uri + signup_url
+ redirect_url = realm.url + signup_url
return HttpResponseRedirect(redirect_url)
def redirect_to_login(realm: Realm) -> HttpResponseRedirect:
login_url = reverse("login_page", kwargs={"template_name": "zerver/login.html"})
- redirect_url = realm.uri + login_url
+ redirect_url = realm.url + login_url
return HttpResponseRedirect(redirect_url)
@@ -1635,7 +1635,7 @@ def redirect_deactivated_user_to_login(realm: Realm, email: str) -> HttpResponse
# a deactivated account on a test server.
login_url = reverse("login_page", kwargs={"template_name": "zerver/login.html"})
redirect_url = append_url_query_string(
- realm.uri + login_url, urlencode({"is_deactivated": email})
+ realm.url + login_url, urlencode({"is_deactivated": email})
)
return HttpResponseRedirect(redirect_url)