import os

import raven
from celery import Celery
from django.conf import settings
from raven.contrib.celery import register_signal, register_logger_signal

# set the default Django settings module for the 'celery' program.
# os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'settings')
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'settings.settings')


class _Celery(Celery):
    """wrap for celery.Celery."""

    def on_configure(self):
        # check if sentry settings provided
        if not settings.SENTRY_CELERY_ENDPOINT:
            return

        client = raven.Client(settings.SENTRY_CELERY_ENDPOINT)

        # register a custom filter to filter out duplicate logs
        register_logger_signal(client)

        # hook into the Celery error handler
        register_signal(client)


app = _Celery('saturn_tasks')

# Using a string here means the worker will not have to
# pickle the object when using Windows.
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
