Example #1
0
        def process_request(self, request):
            projects = get_project_settings()
            host = request.get_host()
            try:
                regex, (project_name, project_suffix, project_settings) = projects[request.META['HTTP_X_PROJECT']]
            except KeyError:
                logger.warning("X-Project not set in the request headers, falling back to regexp resolution!")
                for regex, (project_name, project_suffix, project_settings) in projects.values():
                    if regex.search(host):
                        break
                else:
                    if projects:
                        return HttpResponseServerError("No project found for the given host: %s" % host)
                    project_suffix = project_name = None
            if project_suffix:
                project = '%s.%s' % (project_name, project_suffix)
            else:
                project = project_name

            # Settings and urls override:
            from raven.contrib.django.models import client
            from .urls import get_urls
            settings.clear(project_settings)
            settings.PROJECT_NAME, settings.PROJECT_SUFFIX = project_name, project_suffix
            settings.PROJECT = project
            client.set_dsn(settings.RAVEN_CONFIG['dsn'])
            urlpatterns = get_urls(settings.PROJECT_NAME, settings.PROJECT_SUFFIX)
            request.urlconf = urlpatterns
Example #2
0
def on_task_postrun(sender, **kwargs):
    if not getattr(sender.run, '_django_task', False):
        return
    if not getattr(sender.request, 'is_eager', False):
        original_settings = getattr(sender.request, 'original_settings', None)
        # Restore settings:
        try:
            from raven.contrib.django.models import client
        except ImportError:
            pass
        else:
            client.set_dsn(settings.RAVEN_CONFIG['dsn'])
        settings.clear(original_settings)
Example #3
0
def on_task_prerun(sender, **kwargs):
    if not getattr(sender.run, '_django_task', False):
        return
    local_settings = kwargs['kwargs'].pop('local_settings', None)
    if not isinstance(local_settings, dict):
        warnings.warn("%s.%s task must be called with a valid local_settings named argument" % (sender.run.__module__, sender.run.__name__))
        return
    if not getattr(sender.request, 'is_eager', False):
        # Setup settings:
        try:
            from raven.contrib.django.models import client
        except ImportError:
            pass
        else:    
            # setting here
            client.set_dsn(settings.RAVEN_CONFIG['dsn'])
        sender.request.original_settings = settings.load()
        local_settings = hydrate(local_settings)
        settings.clear(local_settings)
Example #4
0
 def process_response(self, request, response):
     from raven.contrib.django.models import client
     settings.clear()  # If not running tests, cleanup settings (requires patch #12737-thread_local_settings.diff):
     client.set_dsn(settings.RAVEN_CONFIG['dsn'])
     return response