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 | |
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
-rw-r--r-- | examples/django_110/app/management/__init__.py | 0 | ||||
-rw-r--r-- | examples/django_110/app/management/commands/__init__.py | 0 | ||||
-rw-r--r-- | examples/django_110/app/management/commands/example.py | 8 | ||||
-rw-r--r-- | examples/django_110/app/settings.py | 2 | ||||
-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 |
7 files changed, 26 insertions, 6 deletions
diff --git a/examples/django_110/app/management/__init__.py b/examples/django_110/app/management/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/examples/django_110/app/management/__init__.py diff --git a/examples/django_110/app/management/commands/__init__.py b/examples/django_110/app/management/commands/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/examples/django_110/app/management/commands/__init__.py diff --git a/examples/django_110/app/management/commands/example.py b/examples/django_110/app/management/commands/example.py new file mode 100644 index 0000000..a3477dc --- /dev/null +++ b/examples/django_110/app/management/commands/example.py @@ -0,0 +1,8 @@ +from django.core.management.base import BaseCommand + + +class Command(BaseCommand): + help = 'Examples' + + def handle(self, *args, **options): + raise Exception('oops') diff --git a/examples/django_110/app/settings.py b/examples/django_110/app/settings.py index be9c086..1e0155f 100644 --- a/examples/django_110/app/settings.py +++ b/examples/django_110/app/settings.py @@ -37,7 +37,7 @@ INSTALLED_APPS = [ 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', - + 'app', 'raven.contrib.django.raven_compat', ] 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 |