mirror of
https://github.com/zulip/zulip.git
synced 2025-11-03 13:33:24 +00:00
As part of issue #15344, the error report emails add the user role information. This commit adds the user role information to be used by sentry as well.
39 lines
1.3 KiB
Python
39 lines
1.3 KiB
Python
from typing import TYPE_CHECKING, Optional
|
|
|
|
import sentry_sdk
|
|
from sentry_sdk.integrations import Integration
|
|
from sentry_sdk.integrations.django import DjangoIntegration
|
|
from sentry_sdk.integrations.redis import RedisIntegration
|
|
from sentry_sdk.integrations.sqlalchemy import SqlalchemyIntegration
|
|
from sentry_sdk.utils import capture_internal_exceptions
|
|
|
|
from .config import PRODUCTION
|
|
|
|
if TYPE_CHECKING:
|
|
from sentry_sdk._types import Event, Hint
|
|
|
|
def add_context(event: 'Event', hint: 'Hint') -> 'Event':
|
|
from zerver.models import get_user_profile_by_id
|
|
with capture_internal_exceptions():
|
|
user_info = event.get("user", {})
|
|
if user_info.get("id"):
|
|
user_profile = get_user_profile_by_id(user_info["id"])
|
|
user_info["realm"] = user_profile.realm.string_id or 'root'
|
|
user_info["role"] = user_profile.get_role_name()
|
|
return event
|
|
|
|
def setup_sentry(dsn: Optional[str], *integrations: Integration) -> None:
|
|
if not dsn:
|
|
return
|
|
sentry_sdk.init(
|
|
dsn=dsn,
|
|
environment="production" if PRODUCTION else "development",
|
|
integrations=[
|
|
DjangoIntegration(),
|
|
RedisIntegration(),
|
|
SqlalchemyIntegration(),
|
|
*integrations,
|
|
],
|
|
before_send=add_context,
|
|
)
|