| Viewing file:  raven.py (2.09 KB)      -rw-r--r-- Select action/file-type:
 
  (+) |  (+) |  (+) | Code (+) | Session (+) |  (+) | SDB (+) |  (+) |  (+) |  (+) |  (+) |  (+) | 
 
"""raven.contrib.django.management.commands.raven
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 :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
 
 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 json
 import sys
 import time
 
 DJANGO_18 = django.VERSION >= (1, 8, 0)
 
 
 class StoreJsonAction(argparse.Action):
 def __call__(self, parser, namespace, values, option_string=None):
 try:
 value = json.loads(values[0])
 except ValueError:
 print("Invalid JSON was used for option %s.  Received: %s" % (self.dest, values[0]))
 sys.exit(1)
 
 setattr(namespace, self.dest, value)
 
 
 class Command(BaseCommand):
 help = 'Commands to interact with the Sentry client'
 
 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(
 'command', nargs=1,
 )
 parser.add_argument(
 '--data', action=StoreJsonAction,
 nargs=1, dest='data',
 )
 parser.add_argument(
 '--tags', action=StoreJsonAction,
 nargs=1, dest='tags',
 )
 
 def handle(self, command=None, *args, **options):
 if command not in ('test', ['test']):
 print('Usage: manage.py raven test')
 sys.exit(1)
 
 from raven.contrib.django.models import client
 
 send_test_message(client, {
 'tags': options.get('tags'),
 'data': options.get('data'),
 })
 time.sleep(3)
 
 |