mirror of
https://github.com/zulip/zulip.git
synced 2025-10-26 17:43:58 +00:00
request: Move realm from the request to ZulipRequestNotes.
This commit is contained in:
@@ -17,6 +17,7 @@ from version import (
|
|||||||
from zerver.lib.exceptions import InvalidSubdomainError
|
from zerver.lib.exceptions import InvalidSubdomainError
|
||||||
from zerver.lib.realm_description import get_realm_rendered_description, get_realm_text_description
|
from zerver.lib.realm_description import get_realm_rendered_description, get_realm_text_description
|
||||||
from zerver.lib.realm_icon import get_realm_icon_url
|
from zerver.lib.realm_icon import get_realm_icon_url
|
||||||
|
from zerver.lib.request import get_request_notes
|
||||||
from zerver.lib.send_email import FromAddress
|
from zerver.lib.send_email import FromAddress
|
||||||
from zerver.lib.subdomains import get_subdomain
|
from zerver.lib.subdomains import get_subdomain
|
||||||
from zerver.models import Realm, UserProfile, get_realm
|
from zerver.models import Realm, UserProfile, get_realm
|
||||||
@@ -50,19 +51,22 @@ def common_context(user: UserProfile) -> Dict[str, Any]:
|
|||||||
|
|
||||||
|
|
||||||
def get_realm_from_request(request: HttpRequest) -> Optional[Realm]:
|
def get_realm_from_request(request: HttpRequest) -> Optional[Realm]:
|
||||||
|
request_notes = get_request_notes(request)
|
||||||
if hasattr(request, "user") and hasattr(request.user, "realm"):
|
if hasattr(request, "user") and hasattr(request.user, "realm"):
|
||||||
return request.user.realm
|
return request.user.realm
|
||||||
if not hasattr(request, "realm"):
|
if not request_notes.has_fetched_realm:
|
||||||
# We cache the realm object from this function on the request,
|
# We cache the realm object from this function on the request data,
|
||||||
# so that functions that call get_realm_from_request don't
|
# so that functions that call get_realm_from_request don't
|
||||||
# need to do duplicate queries on the same realm while
|
# need to do duplicate queries on the same realm while
|
||||||
# processing a single request.
|
# processing a single request.
|
||||||
subdomain = get_subdomain(request)
|
subdomain = get_subdomain(request)
|
||||||
|
request_notes = get_request_notes(request)
|
||||||
try:
|
try:
|
||||||
request.realm = get_realm(subdomain)
|
request_notes.realm = get_realm(subdomain)
|
||||||
except Realm.DoesNotExist:
|
except Realm.DoesNotExist:
|
||||||
request.realm = None
|
request_notes.realm = None
|
||||||
return request.realm
|
request_notes.has_fetched_realm = True
|
||||||
|
return request_notes.realm
|
||||||
|
|
||||||
|
|
||||||
def get_valid_realm_from_request(request: HttpRequest) -> Realm:
|
def get_valid_realm_from_request(request: HttpRequest) -> Realm:
|
||||||
|
|||||||
@@ -577,10 +577,12 @@ class HostDomainMiddleware(MiddlewareMixin):
|
|||||||
|
|
||||||
subdomain = get_subdomain(request)
|
subdomain = get_subdomain(request)
|
||||||
if subdomain != Realm.SUBDOMAIN_FOR_ROOT_DOMAIN:
|
if subdomain != Realm.SUBDOMAIN_FOR_ROOT_DOMAIN:
|
||||||
|
request_notes = get_request_notes(request)
|
||||||
try:
|
try:
|
||||||
request.realm = get_realm(subdomain)
|
request_notes.realm = get_realm(subdomain)
|
||||||
except Realm.DoesNotExist:
|
except Realm.DoesNotExist:
|
||||||
return render(request, "zerver/invalid_realm.html", status=404)
|
return render(request, "zerver/invalid_realm.html", status=404)
|
||||||
|
request_notes.has_fetched_realm = True
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ from django.template import loader
|
|||||||
|
|
||||||
from zerver.lib.avatar import get_gravatar_url
|
from zerver.lib.avatar import get_gravatar_url
|
||||||
from zerver.lib.exceptions import JsonableError
|
from zerver.lib.exceptions import JsonableError
|
||||||
|
from zerver.lib.request import get_request_notes
|
||||||
from zerver.lib.response import json_success
|
from zerver.lib.response import json_success
|
||||||
from zerver.lib.streams import access_web_public_stream
|
from zerver.lib.streams import access_web_public_stream
|
||||||
from zerver.lib.timestamp import datetime_to_timestamp
|
from zerver.lib.timestamp import datetime_to_timestamp
|
||||||
@@ -29,7 +30,9 @@ def archive(request: HttpRequest, stream_id: int, topic_name: str) -> HttpRespon
|
|||||||
)
|
)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
stream = access_web_public_stream(stream_id, request.realm)
|
realm = get_request_notes(request).realm
|
||||||
|
assert realm is not None
|
||||||
|
stream = access_web_public_stream(stream_id, realm)
|
||||||
except JsonableError:
|
except JsonableError:
|
||||||
return get_response([], False, "")
|
return get_response([], False, "")
|
||||||
|
|
||||||
@@ -75,7 +78,9 @@ def archive(request: HttpRequest, stream_id: int, topic_name: str) -> HttpRespon
|
|||||||
|
|
||||||
def get_web_public_topics_backend(request: HttpRequest, stream_id: int) -> HttpResponse:
|
def get_web_public_topics_backend(request: HttpRequest, stream_id: int) -> HttpResponse:
|
||||||
try:
|
try:
|
||||||
stream = access_web_public_stream(stream_id, request.realm)
|
realm = get_request_notes(request).realm
|
||||||
|
assert realm is not None
|
||||||
|
stream = access_web_public_stream(stream_id, realm)
|
||||||
except JsonableError:
|
except JsonableError:
|
||||||
return json_success(dict(topics=[]))
|
return json_success(dict(topics=[]))
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ from sentry_sdk.integrations.sqlalchemy import SqlalchemyIntegration
|
|||||||
from sentry_sdk.utils import capture_internal_exceptions
|
from sentry_sdk.utils import capture_internal_exceptions
|
||||||
|
|
||||||
from version import ZULIP_VERSION
|
from version import ZULIP_VERSION
|
||||||
|
from zerver.lib.request import get_request_notes
|
||||||
|
|
||||||
from .config import PRODUCTION, STAGING
|
from .config import PRODUCTION, STAGING
|
||||||
|
|
||||||
@@ -50,10 +51,11 @@ def add_context(event: "Event", hint: "Hint") -> Optional["Event"]:
|
|||||||
|
|
||||||
request = get_current_request()
|
request = get_current_request()
|
||||||
if request:
|
if request:
|
||||||
|
request_notes = get_request_notes(request)
|
||||||
if hasattr(request, "client"):
|
if hasattr(request, "client"):
|
||||||
event["tags"]["client"] = request.client.name
|
event["tags"]["client"] = request.client.name
|
||||||
if hasattr(request, "realm"):
|
if request_notes.realm is not None:
|
||||||
event["tags"].setdefault("realm", request.realm.string_id)
|
event["tags"].setdefault("realm", request_notes.realm.string_id)
|
||||||
return event
|
return event
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user