summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Cramer <dcramer@gmail.com>2016-08-05 11:04:32 -0700
committerDavid Cramer <dcramer@gmail.com>2016-08-05 11:04:32 -0700
commit5ed5f94f1ef5c038ded848376ba1e4366ed0ed3c (patch)
tree05f46a3b5f6a5eb77f7b9c9478e41746186628f1
parent1cbb22b48d62885f2a5cd9bec86b7b9e507451f5 (diff)
downloadraven-django-110-management.tar.gz
Fix behavior of raven command on Django 1.8+django-110-management
-rw-r--r--raven/contrib/django/management/commands/raven.py44
-rw-r--r--tests/contrib/django/management/__init__.py0
-rw-r--r--tests/contrib/django/management/commands/__init__.py0
-rw-r--r--tests/contrib/django/management/commands/test_raven.py19
4 files changed, 53 insertions, 10 deletions
diff --git a/raven/contrib/django/management/commands/raven.py b/raven/contrib/django/management/commands/raven.py
index 50f044f..33c48bc 100644
--- a/raven/contrib/django/management/commands/raven.py
+++ b/raven/contrib/django/management/commands/raven.py
@@ -2,7 +2,7 @@
raven.contrib.django.management.commands.raven
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-:copyright: (c) 2010-2013 by the Sentry Team, see AUTHORS for more details
+:copyright: (c) 2010-2016 by the Sentry Team, see AUTHORS for more details
:license: BSD, see LICENSE for more details.
"""
from __future__ import absolute_import, print_function
@@ -10,21 +10,42 @@ from __future__ import absolute_import, print_function
from django.core.management.base import BaseCommand
from optparse import make_option
from raven.scripts.runner import store_json, send_test_message
+
+import argparse
+import django
import sys
import time
+DJANGO_18 = django.VERSION >= (1, 8, 0)
+
+
+class StoreJsonAction(argparse.Action):
+ def __call__(self, parser, namespace, values, option_string=None):
+ setattr(namespace, self.dest, store_json(values[0]))
+
class Command(BaseCommand):
help = 'Commands to interact with the Sentry client'
- option_list = BaseCommand.option_list + (
- make_option(
- "--data", action="callback", callback=store_json,
- type="string", nargs=1, dest="data"),
- make_option(
- "--tags", action="callback", callback=store_json,
- type="string", nargs=1, dest="tags"),
- )
+ if not DJANGO_18:
+ option_list = BaseCommand.option_list + (
+ make_option(
+ '--data', action='callback', callback=store_json,
+ type='string', nargs=1, dest='data'),
+ make_option(
+ '--tags', action='callback', callback=store_json,
+ type='string', nargs=1, dest='tags'),
+ )
+ else:
+ def add_arguments(self, parser):
+ parser.add_argument(
+ '--data', action=StoreJsonAction,
+ nargs=1, dest='data',
+ )
+ parser.add_argument(
+ '--tags', action=StoreJsonAction,
+ nargs=1, dest='tags',
+ )
def handle(self, *args, **options):
if len(args) != 1 or args[0] != 'test':
@@ -33,5 +54,8 @@ class Command(BaseCommand):
from raven.contrib.django.models import client
- send_test_message(client, options)
+ send_test_message(client, {
+ 'tags': options.get('tags'),
+ 'data': options.get('data'),
+ })
time.sleep(3)
diff --git a/tests/contrib/django/management/__init__.py b/tests/contrib/django/management/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/contrib/django/management/__init__.py
diff --git a/tests/contrib/django/management/commands/__init__.py b/tests/contrib/django/management/commands/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/contrib/django/management/commands/__init__.py
diff --git a/tests/contrib/django/management/commands/test_raven.py b/tests/contrib/django/management/commands/test_raven.py
new file mode 100644
index 0000000..5442437
--- /dev/null
+++ b/tests/contrib/django/management/commands/test_raven.py
@@ -0,0 +1,19 @@
+from __future__ import absolute_import
+
+from django.core.management import call_command
+from django.test import TestCase
+from mock import patch
+
+from raven.contrib.django.models import client
+
+
+class RavenCommandTest(TestCase):
+ @patch('raven.contrib.django.management.commands.raven.send_test_message')
+ def test_basic(self, mock_send_test_message):
+ call_command('raven', args=['test'])
+ mock_send_test_message.assert_called_once_with(
+ client, {
+ 'tags': None,
+ 'data': None,
+ }
+ )