Ejemplo n.º 1
0
def dispatch_to_users(notification_name, eta=None, context={}, backends=None, **kwargs):
    notification = get_notification(notification_name)
    task_backends = notification.get_task_backends(backends)

    for backend in task_backends:
        users = notification.get_users(backend, context)
        for user in users:
            if isinstance(user, AnonymousUser):
                send_anonymous_notification.apply_async(
                    (notification_name, backend, context),
                    eta=eta)
            else:
                user_backend = UserBackendRegistry.objects.filter(
                    user=user, backend=backend).first()
                if user_backend:
                    deferred = DeferredNotification.objects.create(
                        notification=notification_name,
                        user_backend=user_backend,
                        context=context)

                    if celery_is_available():
                        task_id = send_notification.apply_async(
                            (deferred.id,),
                            eta=eta)
                        deferred.task_id = task_id
                        deferred.save()
                    else:
                        send_notification(deferred.id)
Ejemplo n.º 2
0
    def schedule(self, context={}, delay_timedelta=None, eta=None, backends=None):
        run_eta = self.get_task_eta(delay_timedelta, eta)
        backends = self.get_task_backends(backends)

        if celery_is_available():
            dispatch_to_users.delay(
                self.name,
                eta=run_eta,
                context=context,
                backends=backends)
        else:
            dispatch_to_users(
                self.name,
                eta=run_eta,
                context=context,
                backends=backends)
Ejemplo n.º 3
0
from __future__ import unicode_literals

from django.utils import timezone

from ahem.utils import get_notification, get_backend, celery_is_available
from ahem.models import DeferredNotification, UserBackendRegistry

if celery_is_available():
    from celery import shared_task
else:
    def shared_task(func):
        return func


@shared_task
def dispatch_to_users(notification_name, eta=None, context={}, backends=None, **kwargs):
    notification = get_notification(notification_name)
    task_backends = notification.get_task_backends(backends)

    users = notification.get_users(context)
    for user in users:
        for backend in task_backends:
            user_backend = UserBackendRegistry.objects.filter(user=user, backend=backend).first()

            if user_backend:
                deferred = DeferredNotification.objects.create(
                    notification=notification_name,
                    user_backend=user_backend,
                    context=context)

                if celery_is_available():
Ejemplo n.º 4
0
from ahem.utils import celery_is_available


if not celery_is_available():
    print("ATTENTION: Running Ahem tests without Celery")