Question

Je construis un projet avec Django et j'essaie actuellement d'implémenter Django-Notification comme moyen de suivre l'activité des utilisateurs. Bien que j'ai réussi à l'installer et à créer des notifications, ils ne sont envoyés par e-mail mais pas stockés dans les bases de données respectives afin que je puisse les afficher dans une vue de flux.

Le / notifications / feed / me donne actuellement une erreur de type, je ne sais pas si cela est lié?

TypeError à / Notifications / Feed /init() prend exactement 3 arguments (1 donné)

Tout conseil serait aimablement apprécié. J'ai examiné comment Pinax utilise la notification, mais je n'ai pas pu comprendre comment ils dépassaient le backend uniquement par e-mail.

Dans settings.py, j'ai «notification» activé, ainsi que le modèle_context_processor 'notification.context_processors.notification'.

urls.py

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

app / 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)

app / view.py

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

notification.send est exécuté, j'ai vérifié cela, mais il semble que rien n'est stocké dans la base de données "Avis".

Je devrais ajouter, je dirige la branche Brian Rosner de Django-Notification (https://github.com/brosner/django-notification).

Était-ce utile?

La solution

Il semble que la fourche de notifications de Django de Brosner diffère de celle de Jtauber dans ce send_now() N'ajoute pas réellement des instances de préavis à la base de données, ni la valeur par défaut EmailBackend Backend de notification.

Vous devrez rédiger votre propre classe de backend de notification qui crée une instance de préavis lorsque deliver() est appelé, et l'ajouter à NOTIIFICATION_BACKENDS.

Un exemple (non testé) reproduisant le comportement de 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()
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top