0001-misc-send-exception-to-sentry-on-views-43116.patch
wcs/compat.py | ||
---|---|---|
19 | 19 |
from threading import Lock |
20 | 20 |
from contextlib import contextmanager |
21 | 21 | |
22 |
from django.utils import six |
|
23 | 22 |
from django.utils.deprecation import MiddlewareMixin |
24 | 23 | |
25 | 24 |
from quixote import get_publisher, get_request |
26 | 25 |
from quixote.errors import PublishError |
27 | 26 |
from quixote.http_request import Upload |
28 | 27 | |
28 |
try: |
|
29 |
import sentry_sdk |
|
30 |
except ImportError: |
|
31 |
sentry_sdk = None |
|
32 | ||
29 | 33 |
from django.http import HttpResponse |
30 | 34 |
from django.conf import settings |
31 | 35 |
from django.template import loader, TemplateDoesNotExist |
... | ... | |
38 | 42 |
from .qommon.http_request import HTTPRequest |
39 | 43 | |
40 | 44 | |
45 |
def can_sentry(): |
|
46 |
return (sentry_sdk is not None) and (sentry_sdk.Hub.current.client is not None) |
|
47 | ||
48 | ||
41 | 49 |
class TemplateWithFallbackView(TemplateView): |
42 | 50 |
quixote_response = None |
43 | 51 | |
... | ... | |
54 | 62 |
context = {'body': get_publisher().finish_interrupted_request(exc)} |
55 | 63 |
self.quixote_response = get_request().response |
56 | 64 |
except Exception as exc: |
65 |
if can_sentry(): |
|
66 |
sentry_sdk.capture_exception(exc) |
|
57 | 67 |
context = {'body': get_publisher().finish_failed_request()} |
58 | 68 |
self.quixote_response = get_request().response |
59 | 69 |
wcs/qommon/publisher.py | ||
---|---|---|
312 | 312 |
# were configured to be mailed. |
313 | 313 |
pass |
314 | 314 | |
315 |
try: |
|
316 |
self.get_app_logger().error('internal server error') |
|
317 |
except: |
|
318 |
pass |
|
319 | ||
320 | 315 |
if exc_type is SystemExit: |
321 | 316 |
raise exc_type |
322 | 317 | |
323 |
- |