Джанго-Уведомление - Альтернатива Email Backend

Я строю проект с помощью Django и в настоящее время пытаюсь внедрить django-уведомления как средство для отслеживания активности пользователей. Хотя мне удалось установить его и создать несколько уведомлений, они отправляются только по электронной почте, но не сохраняются в соответствующих базах данных, чтобы я мог отображать их в представлении канала.

/ Notifications / feed / в настоящее время выдает ошибку типа, я не уверен, что это связано?

Ошибка типа в / notifications / feed /init() принимает ровно 3 аргумента (1 дано)

Любой совет будет любезно оценен. Я смотрел на то, как Pinax использует уведомления, но не мог понять, как они вышли за рамки только для электронной почты.

В settings.py у меня включена функция уведомлений, а также template_context_processor и "tification.context_processors.notification ".

urls.py

    url(r'^note/', include('notification.urls')),

Приложение / management.py

if "notification" in settings.INSTALLED_APPS:
from notification import models as notification

def create_notice_types(app, created_models, verbosity, **kwargs):
    notification.create_notice_type("messages_received", _("Message Received"), _("you have received a message"), default=2)

signals.post_syncdb.connect(create_notice_types, sender=notification)

Приложение / view.py

...      
if notification:
    notification.send([user], "messages_received", {'message': message,})
...

Notification.send выполнен, я проверил это, но кажется, что ничего не хранится в базе данных "уведомления"..

Я должен добавить, что у меня работает ветка django-уведомления Брайана Рознера ( https://github.com/brosner/django-notification).

1 ответ

Решение

Похоже, что форк django-уведомлений Броснера отличается от форта jtauber тем, что send_now() на самом деле не добавляет экземпляры Notice в базу данных, а также по умолчанию EmailBackend Бэкэнд уведомлений.

Вам нужно будет написать свой собственный класс бэкэнда уведомлений, который создает экземпляр Notice, когда deliver() называется, и добавить его в NOTIIFICATION_BACKENDS,

(Непроверенный) пример, воспроизводящий поведение jtauber:

class MyBackend(BaseBackend):
    def deliver(self, recepient, sender, notice_type, extra_context):
        messages = self.get_formatted_messages(["notice.html"],
            notice_type.label, extra_context)
        notice = Notice.objects.create(recipient=recepient,  
            message=messages['notice.html'], notice_type=notice_type, 
            on_site=on_site, sender=sender)
        notice.save()
Другие вопросы по тегам