django-notifications: 类 GitHub 通知的 Django 站内提醒 app

GitHub 站内提醒的功能非常简单实用,当有人向你发起 pull request 的时候,登上 GitHub 会收到站内通知,在右上角还会显示未读的通知数目。

通知内容也很简单:某人某物 做了 某事,接着是该通知的 事件描述

这个功能对于现在的在线应用来说属于非缺不可,codinn 当然也不例外。我找了一圈,只有 django-postman 较为符合要求,但它更接近与站内信(比如豆瓣的豆邮),用它来实现提醒功能既不灵活(缺少对 主谓宾结构 的支持),也显笨重。

codinn 已经在用的 django-activity-stream 挺符合要求的,它实现了类似于 GitHub 主谓宾结构 的 Public Activity。站内提醒则相当于 Private Activity,原理都一样。

想来既然没有现成的,也就不能说是 NIH 了,遂抡起袖子自己动手写了 django-notifications

在 PyPI 上的名字是 django-notifications-hq,加 -hq 后缀是因为 django-notifications 已经被先下手了。

表结构参考 django-activity-stream 的实现,增加了两个字段 -- 事件接收者(recipient)和是否已读(readed)。使用也很简单,就 4 个 API:

  • notifications_unread: templatetag 用来在页面上显示当前登录用户的未读提醒数目;

  • Notification.objects.get().mark_as_read(): 将某条 notification 置为已读;

  • Notification.objects.mark_all_as_read(recipient): 将 recipient 的所有 notifications 置为已读;

  • notify.send(request.user, verb='created comment', action_object=comment, target=group):调用 notify signal 向 django-notifications 发送事件记录。

django-notifications app 放在 GitHub 上,也可以通过 PyPI 用 pip/easy_install 安装

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。