mirror of
https://github.com/zulip/zulip.git
synced 2025-11-06 06:53:25 +00:00
templates: Add new context variables to all templates.
This adds a few new helpful context variables that we can use to compute URLs in all of our templates: * external_uri_scheme: http(s):// * server_uri: The base URL for the server's canonical name * realm_uri: The base URL for the user's realm This is preparatory work for making realm_uri != server_uri when we add support for subdomains.
This commit is contained in:
@@ -9,7 +9,14 @@ from zproject.backends import (password_auth_enabled, dev_auth_enabled,
|
|||||||
|
|
||||||
def add_settings(request):
|
def add_settings(request):
|
||||||
# type: (HttpRequest) -> Dict[str, Any]
|
# type: (HttpRequest) -> Dict[str, Any]
|
||||||
realm = request.user.realm if hasattr(request.user, "realm") else None
|
if hasattr(request.user, "realm"):
|
||||||
|
realm = request.user.realm
|
||||||
|
realm_uri = realm.uri
|
||||||
|
else:
|
||||||
|
realm = None
|
||||||
|
# TODO: Figure out how to add an assertion that this is not used
|
||||||
|
realm_uri = settings.SERVER_URI
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'custom_logo_url': settings.CUSTOM_LOGO_URL,
|
'custom_logo_url': settings.CUSTOM_LOGO_URL,
|
||||||
'register_link_disabled': settings.REGISTER_LINK_DISABLED,
|
'register_link_disabled': settings.REGISTER_LINK_DISABLED,
|
||||||
@@ -20,7 +27,10 @@ def add_settings(request):
|
|||||||
'only_sso': settings.ONLY_SSO,
|
'only_sso': settings.ONLY_SSO,
|
||||||
'external_api_path': settings.EXTERNAL_API_PATH,
|
'external_api_path': settings.EXTERNAL_API_PATH,
|
||||||
'external_api_uri': settings.EXTERNAL_API_URI,
|
'external_api_uri': settings.EXTERNAL_API_URI,
|
||||||
|
'external_host': settings.EXTERNAL_HOST,
|
||||||
'external_uri_scheme': settings.EXTERNAL_URI_SCHEME,
|
'external_uri_scheme': settings.EXTERNAL_URI_SCHEME,
|
||||||
|
'realm_uri': realm_uri,
|
||||||
|
'server_uri': settings.SERVER_URI,
|
||||||
'api_site_required': settings.EXTERNAL_API_PATH != "api.zulip.com",
|
'api_site_required': settings.EXTERNAL_API_PATH != "api.zulip.com",
|
||||||
'email_integration_enabled': settings.EMAIL_GATEWAY_BOT != "",
|
'email_integration_enabled': settings.EMAIL_GATEWAY_BOT != "",
|
||||||
'email_gateway_example': settings.EMAIL_GATEWAY_EXAMPLE,
|
'email_gateway_example': settings.EMAIL_GATEWAY_EXAMPLE,
|
||||||
|
|||||||
@@ -170,6 +170,9 @@ def handle_digest_email(user_profile_id, cutoff):
|
|||||||
template_payload = {
|
template_payload = {
|
||||||
'name': user_profile.full_name,
|
'name': user_profile.full_name,
|
||||||
'external_host': settings.EXTERNAL_HOST,
|
'external_host': settings.EXTERNAL_HOST,
|
||||||
|
'external_uri_scheme': settings.EXTERNAL_URI_SCHEME,
|
||||||
|
'server_uri': settings.SERVER_URI,
|
||||||
|
'realm_uri': user_profile.realm.uri,
|
||||||
'unsubscribe_link': one_click_unsubscribe_link(user_profile, "digest")
|
'unsubscribe_link': one_click_unsubscribe_link(user_profile, "digest")
|
||||||
} # type: Dict[str, Any]
|
} # type: Dict[str, Any]
|
||||||
|
|
||||||
|
|||||||
@@ -43,9 +43,8 @@ def one_click_unsubscribe_link(user_profile, endpoint):
|
|||||||
Zulip e-mails without having to first log in.
|
Zulip e-mails without having to first log in.
|
||||||
"""
|
"""
|
||||||
token = unsubscribe_token(user_profile)
|
token = unsubscribe_token(user_profile)
|
||||||
base_url = "https://" + settings.EXTERNAL_HOST
|
|
||||||
resource_path = "accounts/unsubscribe/%s/%s" % (endpoint, token)
|
resource_path = "accounts/unsubscribe/%s/%s" % (endpoint, token)
|
||||||
return "%s/%s" % (base_url.rstrip("/"), resource_path)
|
return "%s/%s" % (settings.SERVER_URI.rstrip("/"), resource_path)
|
||||||
|
|
||||||
def hashchange_encode(string):
|
def hashchange_encode(string):
|
||||||
# type: (text_type) -> text_type
|
# type: (text_type) -> text_type
|
||||||
@@ -58,17 +57,17 @@ def hashchange_encode(string):
|
|||||||
def pm_narrow_url(participants):
|
def pm_narrow_url(participants):
|
||||||
# type: (List[text_type]) -> text_type
|
# type: (List[text_type]) -> text_type
|
||||||
participants.sort()
|
participants.sort()
|
||||||
base_url = u"https://%s/#narrow/pm-with/" % (settings.EXTERNAL_HOST,)
|
base_url = u"%s/#narrow/pm-with/" % (settings.SERVER_URI,)
|
||||||
return base_url + hashchange_encode(",".join(participants))
|
return base_url + hashchange_encode(",".join(participants))
|
||||||
|
|
||||||
def stream_narrow_url(stream):
|
def stream_narrow_url(stream):
|
||||||
# type: (text_type) -> text_type
|
# type: (text_type) -> text_type
|
||||||
base_url = u"https://%s/#narrow/stream/" % (settings.EXTERNAL_HOST,)
|
base_url = u"%s/#narrow/stream/" % (settings.SERVER_URI,)
|
||||||
return base_url + hashchange_encode(stream)
|
return base_url + hashchange_encode(stream)
|
||||||
|
|
||||||
def topic_narrow_url(stream, topic):
|
def topic_narrow_url(stream, topic):
|
||||||
# type: (text_type, text_type) -> text_type
|
# type: (text_type, text_type) -> text_type
|
||||||
base_url = u"https://%s/#narrow/stream/" % (settings.EXTERNAL_HOST,)
|
base_url = u"%s/#narrow/stream/" % (settings.SERVER_URI,)
|
||||||
return u"%s%s/topic/%s" % (base_url, hashchange_encode(stream),
|
return u"%s%s/topic/%s" % (base_url, hashchange_encode(stream),
|
||||||
hashchange_encode(topic))
|
hashchange_encode(topic))
|
||||||
|
|
||||||
@@ -249,9 +248,12 @@ def do_send_missedmessage_events_reply_in_zulip(user_profile, missed_messages, m
|
|||||||
'name': user_profile.full_name,
|
'name': user_profile.full_name,
|
||||||
'messages': build_message_list(user_profile, missed_messages),
|
'messages': build_message_list(user_profile, missed_messages),
|
||||||
'message_count': message_count,
|
'message_count': message_count,
|
||||||
'url': 'https://%s' % (settings.EXTERNAL_HOST,),
|
'url': settings.SERVER_URI,
|
||||||
'reply_warning': False,
|
'reply_warning': False,
|
||||||
'external_host': settings.EXTERNAL_HOST,
|
'external_host': settings.EXTERNAL_HOST,
|
||||||
|
'external_uri_scheme': settings.EXTERNAL_URI_SCHEME,
|
||||||
|
'server_uri': settings.SERVER_URI,
|
||||||
|
'realm_uri': user_profile.realm.uri,
|
||||||
'mention': missed_messages[0].recipient.type == Recipient.STREAM,
|
'mention': missed_messages[0].recipient.type == Recipient.STREAM,
|
||||||
'reply_to_zulip': True,
|
'reply_to_zulip': True,
|
||||||
}
|
}
|
||||||
@@ -471,6 +473,9 @@ def enqueue_welcome_emails(email, name):
|
|||||||
template_payload = {'name': name,
|
template_payload = {'name': name,
|
||||||
'verbose_support_offers': settings.VERBOSE_SUPPORT_OFFERS,
|
'verbose_support_offers': settings.VERBOSE_SUPPORT_OFFERS,
|
||||||
'external_host': settings.EXTERNAL_HOST,
|
'external_host': settings.EXTERNAL_HOST,
|
||||||
|
'external_uri_scheme': settings.EXTERNAL_URI_SCHEME,
|
||||||
|
'server_uri': settings.SERVER_URI,
|
||||||
|
'realm_uri': user_profile.realm.uri,
|
||||||
'unsubscribe_link': unsubscribe_link}
|
'unsubscribe_link': unsubscribe_link}
|
||||||
|
|
||||||
# Send day 1 email
|
# Send day 1 email
|
||||||
|
|||||||
@@ -190,6 +190,10 @@ class Realm(ModelReprMixin, models.Model):
|
|||||||
# TODO: Change return type to QuerySet[UserProfile]
|
# TODO: Change return type to QuerySet[UserProfile]
|
||||||
return UserProfile.objects.filter(realm=self, is_active=True).select_related()
|
return UserProfile.objects.filter(realm=self, is_active=True).select_related()
|
||||||
|
|
||||||
|
@property
|
||||||
|
def uri(self):
|
||||||
|
return settings.SERVER_URI
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def is_zephyr_mirror_realm(self):
|
def is_zephyr_mirror_realm(self):
|
||||||
# type: () -> bool
|
# type: () -> bool
|
||||||
|
|||||||
@@ -1228,7 +1228,11 @@ def process_unsubscribe(token, subscription_type, unsubscribe_function):
|
|||||||
unsubscribe_function(user_profile)
|
unsubscribe_function(user_profile)
|
||||||
return render_to_response('zerver/unsubscribe_success.html',
|
return render_to_response('zerver/unsubscribe_success.html',
|
||||||
{"subscription_type": subscription_type,
|
{"subscription_type": subscription_type,
|
||||||
"external_host": settings.EXTERNAL_HOST})
|
"external_host": settings.EXTERNAL_HOST,
|
||||||
|
'external_uri_scheme': settings.EXTERNAL_URI_SCHEME,
|
||||||
|
'server_uri': settings.SERVER_URI,
|
||||||
|
'realm_uri': user_profile.realm.uri,
|
||||||
|
})
|
||||||
|
|
||||||
# Email unsubscribe functions. All have the function signature
|
# Email unsubscribe functions. All have the function signature
|
||||||
# processor(user_profile).
|
# processor(user_profile).
|
||||||
|
|||||||
@@ -158,6 +158,9 @@ class ConfirmationEmailWorker(QueueProcessingWorker):
|
|||||||
'referrer': referrer,
|
'referrer': referrer,
|
||||||
'verbose_support_offers': settings.VERBOSE_SUPPORT_OFFERS,
|
'verbose_support_offers': settings.VERBOSE_SUPPORT_OFFERS,
|
||||||
'external_host': settings.EXTERNAL_HOST,
|
'external_host': settings.EXTERNAL_HOST,
|
||||||
|
'external_uri_scheme': settings.EXTERNAL_URI_SCHEME,
|
||||||
|
'server_uri': settings.SERVER_URI,
|
||||||
|
'realm_uri': referrer.realm.uri,
|
||||||
'support_email': settings.ZULIP_ADMINISTRATOR},
|
'support_email': settings.ZULIP_ADMINISTRATOR},
|
||||||
datetime.timedelta(days=2),
|
datetime.timedelta(days=2),
|
||||||
tags=["invitation-reminders"],
|
tags=["invitation-reminders"],
|
||||||
|
|||||||
@@ -469,6 +469,7 @@ if DEVELOPMENT:
|
|||||||
if "EXTERNAL_API_PATH" not in vars():
|
if "EXTERNAL_API_PATH" not in vars():
|
||||||
EXTERNAL_API_PATH = EXTERNAL_HOST + "/api"
|
EXTERNAL_API_PATH = EXTERNAL_HOST + "/api"
|
||||||
EXTERNAL_API_URI = EXTERNAL_URI_SCHEME + EXTERNAL_API_PATH
|
EXTERNAL_API_URI = EXTERNAL_URI_SCHEME + EXTERNAL_API_PATH
|
||||||
|
SERVER_URI = EXTERNAL_URI_SCHEME + EXTERNAL_HOST
|
||||||
|
|
||||||
S3_KEY = get_secret("s3_key")
|
S3_KEY = get_secret("s3_key")
|
||||||
S3_SECRET_KEY = get_secret("s3_secret_key")
|
S3_SECRET_KEY = get_secret("s3_secret_key")
|
||||||
|
|||||||
Reference in New Issue
Block a user