diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
commit | 2aa4a82499d4becd2284cdb482213d541b8804dd (patch) | |
tree | b80bf8bf13c3766139fbacc530efd0dd9d54394c /third_party/python/sentry-sdk/sentry_sdk/integrations/trytond.py | |
parent | Initial commit. (diff) | |
download | firefox-upstream.tar.xz firefox-upstream.zip |
Adding upstream version 86.0.1.upstream/86.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'third_party/python/sentry-sdk/sentry_sdk/integrations/trytond.py')
-rw-r--r-- | third_party/python/sentry-sdk/sentry_sdk/integrations/trytond.py | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/third_party/python/sentry-sdk/sentry_sdk/integrations/trytond.py b/third_party/python/sentry-sdk/sentry_sdk/integrations/trytond.py new file mode 100644 index 0000000000..062a756993 --- /dev/null +++ b/third_party/python/sentry-sdk/sentry_sdk/integrations/trytond.py @@ -0,0 +1,55 @@ +import sentry_sdk.hub +import sentry_sdk.utils +import sentry_sdk.integrations +import sentry_sdk.integrations.wsgi +from sentry_sdk._types import MYPY + +from trytond.exceptions import TrytonException # type: ignore +from trytond.wsgi import app # type: ignore + +if MYPY: + from typing import Any + + +# TODO: trytond-worker, trytond-cron and trytond-admin intergations + + +class TrytondWSGIIntegration(sentry_sdk.integrations.Integration): + identifier = "trytond_wsgi" + + def __init__(self): # type: () -> None + pass + + @staticmethod + def setup_once(): # type: () -> None + + app.wsgi_app = sentry_sdk.integrations.wsgi.SentryWsgiMiddleware(app.wsgi_app) + + def error_handler(e): # type: (Exception) -> None + hub = sentry_sdk.hub.Hub.current + + if hub.get_integration(TrytondWSGIIntegration) is None: + return + elif isinstance(e, TrytonException): + return + else: + # If an integration is there, a client has to be there. + client = hub.client # type: Any + event, hint = sentry_sdk.utils.event_from_exception( + e, + client_options=client.options, + mechanism={"type": "trytond", "handled": False}, + ) + hub.capture_event(event, hint=hint) + + # Expected error handlers signature was changed + # when the error_handler decorator was introduced + # in Tryton-5.4 + if hasattr(app, "error_handler"): + + @app.error_handler + def _(app, request, e): # type: ignore + error_handler(e) + + else: + app.error_handlers.append(error_handler) |