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