danidee10/django-notifs

View on GitHub
notifications/backends/django_channels.py

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
"""Channels backend"""

from __future__ import absolute_import, unicode_literals

import logging

import channels.layers
from asgiref.sync import async_to_sync

from .. import default_settings as settings
from .base import BaseBackend


class ChannelsBackend(BaseBackend):

    logger = logging.getLogger('django_notifs.backends.channels')

    def produce(self, provider, payload, context, countdown):
        channel_layer = channels.layers.get_channel_layer(
            settings.NOTIFICATIONS_QUEUE_NAME
        )
        async_to_sync(channel_layer.send)(
            settings.NOTIFICATIONS_QUEUE_NAME,
            {
                'provider': provider,
                'payload': payload,
                'context': context,
                'countdown': countdown,
                'type': 'notify',
            },
        )