Skip to content
Snippets Groups Projects
celery.py 1.33 KiB
Newer Older
Eliot Berriot's avatar
Eliot Berriot committed
import os
from celery import Celery
from django.apps import AppConfig
from django.conf import settings
if not settings.configured:
    # set the default Django settings module for the 'celery' program.
Eliot Berriot's avatar
Eliot Berriot committed
    os.environ.setdefault(
        "DJANGO_SETTINGS_MODULE", "config.settings.local"
    )  # pragma: no cover
Eliot Berriot's avatar
Eliot Berriot committed
app = Celery("funkwhale_api")
Eliot Berriot's avatar
Eliot Berriot committed
    name = "funkwhale_api.taskapp"
    verbose_name = "Celery Config"

    def ready(self):
        # Using a string here means the worker will not have to
        # pickle the object when using Windows.
Eliot Berriot's avatar
Eliot Berriot committed
        app.config_from_object("django.conf:settings", namespace="CELERY")
        app.autodiscover_tasks(lambda: settings.INSTALLED_APPS, force=True)


def require_instance(model_or_qs, parameter_name, id_kwarg_name=None):
    def decorator(function):
        @functools.wraps(function)
        def inner(*args, **kwargs):
Eliot Berriot's avatar
Eliot Berriot committed
            kw = id_kwarg_name or "_".join([parameter_name, "id"])
            pk = kwargs.pop(kw)
            try:
                instance = model_or_qs.get(pk=pk)
            except AttributeError:
                instance = model_or_qs.objects.get(pk=pk)
            kwargs[parameter_name] = instance
            return function(*args, **kwargs)
Eliot Berriot's avatar
Eliot Berriot committed

Eliot Berriot's avatar
Eliot Berriot committed