Usando django-notification
Este post fue migrado de un blog hecho con Wordpress. Si se ve mal, dejame un comentario y lo arreglo.
El siguiente es un artículo del proyecto que hemos traducido yo y Cecilia.
Integrar Notification
Integrar notification a tu aplicación es un proceso simple de dos pasos.
- crear tus tipos de notas (Notice Type)
- enviar notificaciones
Crear tipos de notas (Notice Type)
Debes ejecutar create_notice_type(label, display, description)
una vez para crear los tipos de notas para tu aplicación en la base de datos. label
es un nombre interno, corto, que será usado para el tipo, display
es lo que el usuario verá como el nombre del tipo de nota y description
es una descripción corta.
Por ejemplo:
from django.dispatch import dispatcher from django.db.models import signals try: from notification import models as notification def create_notice_types(app, created_models, verbosity, **kwargs): notification.create_notice_type("invitacion_amigo", u"Invitación recibida", u"has recibido una invitación") notification.create_notice_type("invitacion_aceptada", u"Invitación aceptada", u"una invitación que enviaste fue aceptada") dispatcher.connect(create_notice_types, signal=signals.post_syncdb, sender=notification) except ImportError: print "No se encontró la aplicación notification, no se crearán objetos del tipo NoticeTypes"
Notar que el código está envuelto con un try para que si django-notification no está instalado, tu aplicación funcione de todas formas.
Enviar notificaciones
Para enviar mensajes se usa send(users, notice_type_label, message_template, object_list, issue_notice)
dónde object_list
y issue_notice
son opcionales.
users
es una lista de usuarios que deben recibir la nota. notice_type_label
es la etiqueta que usaste en el paso previo para identificar un tipo de nota. message_template
es solo un string, aunque si object_list
no está vacía, entonces message_template
debe contener tantos %s
como objetos en object_list
. Entonces serán reemplazados con referencias a los correspondientes objetos de object_list
.
Por ejemplo:
notification.send([to_user], "invitacion_amigo", "%s solicita ser tu amigo.", [from_user])
enviará una nota de tipo invitacion_amigo
a to_user
con el mensaje XXX solicita ser tu amigo.
dónde XXX es una referencia al objeto from_user
. Dependiendo del medio de notificación, esta referencia será un link o solo texto plano.
issue_notice
es True
por defecto pero se puede cambiar a False
si querés que una notificación se envíe pero no se persista como un objeto de tipo Notice
en la base de datos.
Para permitir que tu aplicación funcione sin notification, podés envolver el import en un try y testear si el módulo fue cargado antes de enviar la nota.
Por ejemplo:
try: from notification import models as notification except ImportError: notification = None
y luego:
if notification: notification.send([to_user], "invitacion_amigo", "%s solicita ser tu amigo.", [from_user])
Comentarios
Comments powered by Disqus