mirror of https://github.com/zulip/zulip.git
subdomains: Extract zerver.lib.subdomains library.
These never really belonged with the rest of zerver.lib.utils.py, and having a separate library makes it easier to enforce full test coverage.
This commit is contained in:
parent
7107d19aeb
commit
1ab2ca5986
|
@ -95,6 +95,7 @@ not_yet_fully_covered = {
|
|||
'zerver/lib/sqlalchemy_utils.py',
|
||||
'zerver/lib/str_utils.py',
|
||||
'zerver/lib/stream_recipient.py',
|
||||
'zerver/lib/subdomains.py',
|
||||
'zerver/lib/tex.py',
|
||||
'zerver/lib/timeout.py',
|
||||
'zerver/lib/unminify.py',
|
||||
|
|
|
@ -17,7 +17,7 @@ from zproject.backends import (
|
|||
)
|
||||
from zerver.lib.bugdown import convert
|
||||
from zerver.lib.send_email import FromAddress
|
||||
from zerver.lib.utils import get_subdomain
|
||||
from zerver.lib.subdomains import get_subdomain
|
||||
from zerver.lib.realm_icon import get_realm_icon_url
|
||||
|
||||
from version import ZULIP_VERSION
|
||||
|
|
|
@ -12,9 +12,9 @@ from django.utils.decorators import available_attrs
|
|||
from django.utils.timezone import now as timezone_now
|
||||
from django.conf import settings
|
||||
from zerver.lib.queue import queue_json_publish
|
||||
from zerver.lib.subdomains import get_subdomain, check_subdomain
|
||||
from zerver.lib.timestamp import datetime_to_timestamp, timestamp_to_datetime
|
||||
from zerver.lib.utils import statsd, get_subdomain, check_subdomain, \
|
||||
is_remote_server
|
||||
from zerver.lib.utils import statsd, is_remote_server
|
||||
from zerver.lib.exceptions import RateLimited, JsonableError, ErrorCode
|
||||
|
||||
from zerver.lib.rate_limiter import incr_ratelimit, is_ratelimited, \
|
||||
|
|
|
@ -15,8 +15,8 @@ from zerver.lib.actions import do_change_password, user_email_is_unique, \
|
|||
from zerver.lib.name_restrictions import is_reserved_subdomain, is_disposable_domain
|
||||
from zerver.lib.request import JsonableError
|
||||
from zerver.lib.send_email import send_email, FromAddress
|
||||
from zerver.lib.subdomains import get_subdomain, check_subdomain
|
||||
from zerver.lib.users import check_full_name
|
||||
from zerver.lib.utils import get_subdomain, check_subdomain
|
||||
from zerver.models import Realm, get_user_profile_by_email, UserProfile, \
|
||||
get_realm, email_to_domain, email_allowed_for_realm
|
||||
from zproject.backends import password_auth_enabled
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from django.conf import settings
|
||||
from django.http import HttpRequest
|
||||
from typing import Optional, Text
|
||||
|
||||
def _extract_subdomain(request):
|
||||
# type: (HttpRequest) -> Text
|
||||
domain = request.get_host().lower()
|
||||
index = domain.find("." + settings.EXTERNAL_HOST)
|
||||
if index == -1:
|
||||
return ""
|
||||
return domain[0:index]
|
||||
|
||||
def get_subdomain(request):
|
||||
# type: (HttpRequest) -> Text
|
||||
subdomain = _extract_subdomain(request)
|
||||
if subdomain in settings.ROOT_SUBDOMAIN_ALIASES:
|
||||
return ""
|
||||
return subdomain
|
||||
|
||||
def is_subdomain_root_or_alias(request):
|
||||
# type: (HttpRequest) -> bool
|
||||
subdomain = _extract_subdomain(request)
|
||||
return not subdomain or subdomain in settings.ROOT_SUBDOMAIN_ALIASES
|
||||
|
||||
def check_subdomain(realm_subdomain, user_subdomain):
|
||||
# type: (Optional[Text], Optional[Text]) -> bool
|
||||
if realm_subdomain is not None:
|
||||
if (realm_subdomain == "" and user_subdomain is None):
|
||||
return True
|
||||
if realm_subdomain != user_subdomain:
|
||||
return False
|
||||
return True
|
|
@ -12,7 +12,6 @@ import sys
|
|||
from time import sleep
|
||||
|
||||
from django.conf import settings
|
||||
from django.http import HttpRequest
|
||||
from six.moves import map, zip_longest
|
||||
from zerver.lib.str_utils import force_text
|
||||
|
||||
|
@ -185,35 +184,6 @@ def query_chunker(queries, id_collector=None, chunk_size=1000, db_chunk_size=Non
|
|||
|
||||
yield [row for row_id, i, row in tup_chunk]
|
||||
|
||||
def _extract_subdomain(request):
|
||||
# type: (HttpRequest) -> Text
|
||||
domain = request.get_host().lower()
|
||||
index = domain.find("." + settings.EXTERNAL_HOST)
|
||||
if index == -1:
|
||||
return ""
|
||||
return domain[0:index]
|
||||
|
||||
def get_subdomain(request):
|
||||
# type: (HttpRequest) -> Text
|
||||
subdomain = _extract_subdomain(request)
|
||||
if subdomain in settings.ROOT_SUBDOMAIN_ALIASES:
|
||||
return ""
|
||||
return subdomain
|
||||
|
||||
def is_subdomain_root_or_alias(request):
|
||||
# type: (HttpRequest) -> bool
|
||||
subdomain = _extract_subdomain(request)
|
||||
return not subdomain or subdomain in settings.ROOT_SUBDOMAIN_ALIASES
|
||||
|
||||
def check_subdomain(realm_subdomain, user_subdomain):
|
||||
# type: (Optional[Text], Optional[Text]) -> bool
|
||||
if realm_subdomain is not None:
|
||||
if (realm_subdomain == "" and user_subdomain is None):
|
||||
return True
|
||||
if realm_subdomain != user_subdomain:
|
||||
return False
|
||||
return True
|
||||
|
||||
def split_by(array, group_size, filler):
|
||||
# type: (List[Any], int, Any) -> List[List[Any]]
|
||||
"""
|
||||
|
|
|
@ -8,10 +8,11 @@ from django.utils.translation import ugettext as _
|
|||
from django.utils.deprecation import MiddlewareMixin
|
||||
|
||||
from zerver.lib.response import json_error, json_response_from_error
|
||||
from zerver.lib.subdomains import get_subdomain
|
||||
from zerver.lib.exceptions import JsonableError, ErrorCode
|
||||
from django.db import connection
|
||||
from django.http import HttpRequest, HttpResponse, StreamingHttpResponse
|
||||
from zerver.lib.utils import statsd, get_subdomain
|
||||
from zerver.lib.utils import statsd
|
||||
from zerver.lib.queue import queue_json_publish
|
||||
from zerver.lib.cache import get_remote_cache_time, get_remote_cache_requests
|
||||
from zerver.lib.bugdown import get_bugdown_time, get_bugdown_requests
|
||||
|
|
|
@ -26,7 +26,7 @@ from zerver.forms import HomepageForm, OurAuthenticationForm, \
|
|||
from zerver.lib.mobile_auth_otp import is_valid_otp, otp_encrypt_api_key
|
||||
from zerver.lib.request import REQ, has_request_variables, JsonableError
|
||||
from zerver.lib.response import json_success, json_error
|
||||
from zerver.lib.utils import get_subdomain, is_subdomain_root_or_alias
|
||||
from zerver.lib.subdomains import get_subdomain, is_subdomain_root_or_alias
|
||||
from zerver.lib.validator import validate_login_email
|
||||
from zerver.models import PreregistrationUser, UserProfile, remote_user_to_email, Realm, \
|
||||
get_realm
|
||||
|
|
|
@ -24,7 +24,8 @@ from zerver.lib.i18n import get_language_list, get_language_name, \
|
|||
get_language_list_for_templates
|
||||
from zerver.lib.push_notifications import num_push_devices_for_user
|
||||
from zerver.lib.streams import access_stream_by_name
|
||||
from zerver.lib.utils import statsd, get_subdomain
|
||||
from zerver.lib.subdomains import get_subdomain
|
||||
from zerver.lib.utils import statsd
|
||||
|
||||
import calendar
|
||||
import datetime
|
||||
|
|
|
@ -12,7 +12,7 @@ import ujson
|
|||
from zerver.decorator import has_request_variables, REQ
|
||||
from zerver.lib import bugdown
|
||||
from zerver.lib.integrations import CATEGORIES, INTEGRATIONS, HUBOT_LOZENGES
|
||||
from zerver.lib.utils import get_subdomain
|
||||
from zerver.lib.subdomains import get_subdomain
|
||||
from zerver.templatetags.app_filters import render_markdown_path
|
||||
|
||||
def add_api_uri_context(context, request):
|
||||
|
|
|
@ -29,7 +29,7 @@ from zerver.decorator import require_post, has_request_variables, \
|
|||
from zerver.lib.onboarding import send_initial_pms, setup_initial_streams, \
|
||||
setup_initial_private_stream, send_initial_realm_messages
|
||||
from zerver.lib.response import json_success
|
||||
from zerver.lib.utils import get_subdomain
|
||||
from zerver.lib.subdomains import get_subdomain
|
||||
from zerver.lib.timezone import get_all_timezones
|
||||
from zproject.backends import password_auth_enabled
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@ from social_core.exceptions import AuthFailed, SocialAuthBaseException
|
|||
from django.contrib.auth import authenticate
|
||||
from zerver.lib.users import check_full_name
|
||||
from zerver.lib.request import JsonableError
|
||||
from zerver.lib.utils import check_subdomain, get_subdomain
|
||||
from zerver.lib.subdomains import check_subdomain, get_subdomain
|
||||
|
||||
from social_django.models import DjangoStorage
|
||||
from social_django.strategy import DjangoStrategy
|
||||
|
|
Loading…
Reference in New Issue