diff options
author | David Cramer <dcramer@gmail.com> | 2017-02-21 15:24:49 -0800 |
---|---|---|
committer | David Cramer <dcramer@gmail.com> | 2017-02-21 15:25:10 -0800 |
commit | 4d413e2b583714752bb4e70192d6f56672989417 (patch) | |
tree | 503387e10eb8f84ff2916dc0490053ae7aad325f /raven/contrib | |
parent | 753db03984451e19225c576306479a97272d7b95 (diff) | |
download | raven-4d413e2b583714752bb4e70192d6f56672989417.tar.gz |
[django] fix registration of hooks
- utilize app.ready() for Django 1.7+
- ensure client is instantiated upon initialization (fixes sys.except_hook)
Fixes GH-884
Diffstat (limited to 'raven/contrib')
-rw-r--r-- | raven/contrib/django/__init__.py | 8 | ||||
-rw-r--r-- | raven/contrib/django/apps.py | 5 | ||||
-rw-r--r-- | raven/contrib/django/models.py | 9 |
3 files changed, 17 insertions, 5 deletions
diff --git a/raven/contrib/django/__init__.py b/raven/contrib/django/__init__.py index 23036a6..3fb09fa 100644 --- a/raven/contrib/django/__init__.py +++ b/raven/contrib/django/__init__.py @@ -7,7 +7,13 @@ raven.contrib.django """ from __future__ import absolute_import -default_app_config = 'raven.contrib.django.apps.RavenConfig' +import django +default_app_config = 'raven.contrib.django.apps.RavenConfig' from .client import DjangoClient # NOQA + +# Django 1.8 uses ``raven.contrib.apps.RavenConfig`` +if django.VERSION < (1, 7, 0): + from .models import initialize + initialize() diff --git a/raven/contrib/django/apps.py b/raven/contrib/django/apps.py index 7aaf4ff..db33b38 100644 --- a/raven/contrib/django/apps.py +++ b/raven/contrib/django/apps.py @@ -1,5 +1,6 @@ # -*- coding: utf-8 -*- from __future__ import absolute_import + from django.apps import AppConfig @@ -7,3 +8,7 @@ class RavenConfig(AppConfig): name = 'raven.contrib.django' label = 'raven_contrib_django' verbose_name = 'Raven' + + def ready(self): + from .models import initialize + initialize() diff --git a/raven/contrib/django/models.py b/raven/contrib/django/models.py index 05bf3cc..8d60aa0 100644 --- a/raven/contrib/django/models.py +++ b/raven/contrib/django/models.py @@ -237,13 +237,14 @@ def install_middleware(): type(middleware)((name,)) + middleware) -if ( - 'raven.contrib.django' in settings.INSTALLED_APPS or - 'raven.contrib.django.raven_compat' in settings.INSTALLED_APPS -): +def initialize(): register_serializers() install_middleware() + # XXX(dcramer): maybe this setting should disable ALL of this? if not getattr(settings, 'DISABLE_SENTRY_INSTRUMENTATION', False): handler = SentryDjangoHandler() handler.install() + + # instantiate client so hooks get registered + get_client() # NOQA |