Plone内容的已读/未读状态
项目描述
collective.readunread
简介
此软件包为Plone对象提供已读/未读状态。
它为标记了IReadByProvider接口的任何对象添加了一个“readBy”字段和适当的索引。
如何使用它
为了激活已读/未读功能,目标对象必须实现
collective.readunread.interfaces.IReadByProvider
您可以在您的包中添加一个ZCML别名,如下所示
<five:implements class="Products.ATContentTypes.content.document.ATDocument" interface="collective.readunread.interfaces.IReadByProvider" />
工作原理
为了测试目的,我们将它分配给文档内容类型
>>> from zope import interface >>> from Products.ATContentTypes.content.document import ATDocument >>> from collective.readunread.interfaces import IReadByProvider >>> interface.classImplements(ATDocument,IReadByProvider)
并创建一个文档
>>> self.setRoles(('Manager',)) >>> docid = self.folder.invokeFactory('Document', 'document') >>> doc = self.folder[docid]
我们必须触发IObjectInitializedEvent,因为我们有一个订阅者将负责将创建者的用户ID推入“readBy”字段
>>> from Products.Archetypes.event import ObjectInitializedEvent >>> from zope.event import notify >>> notify(ObjectInitializedEvent(doc))
我们可以使用管理适配器来处理readby状态
>>> from collective.readunread.interfaces import IReadByManager >>> manager = IReadByManager(doc)
由于文档是新的,我们应该只获取创建者的ID
>>> len(manager.get_readby()) == 1 True >>> manager.get_readby() ('test_user_1_',)
让我们以其他用户的身份阅读文档。以下将创建3个新用户
>>> from collective.readunread.tests.tests import setupMembers >>> setupMembers(self.portal, n=3)
我们有两种方法将文档设置为用户已读。首先,我们可以通过用户(模拟查看文档)触发PostValidationHook事件
>>> from collective.readunread.tests.tests import fireViewEvent >>> fireViewEvent(doc,'user1') >>> fireViewEvent(doc,'user2')
让我们看看谁阅读了文档
>>> 'user1' in manager.get_readby() True >>> 'user2' in manager.get_readby() True >>> 'user3' in manager.get_readby() False
第二种方法是通过管理器进行设置
>>> manager.set_readby(['user3',]) >>> 'user3' in manager.get_readby() True
我们可以检查用户的状态
>>> manager.get_status('user3') 'read'
我们也可以将用户设置为未读
>>> manager.set_unreadby(['user3',]) >>> 'user3' not in manager.get_readby() True >>> manager.get_status('user3') 'unread'
待办事项
文档和测试按钮宏
文档和测试辅助视图
变更日志
1.0b6
修复缺少导入浏览器包的问题
1.0b5
更新文档
为管理器添加了doctest
修复了适配器
改进了工具
1.0b4
修复配置文件名称
添加 .gitignore
1.0b3
缺少HISTORY更新(尝试使用jarn.mkrelease)
1.0b2
更新文档
1.0b1dev(未发布)
初始版本
鸣谢
在国际劳工组织培训中心的支持下开发。
项目详情
关闭
collective.readunread-1.0b6.zip的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 9b27e73fe79bbde15b462d665faca2dd6682870476bdd95f6bfca83cf69d3fc3 |
|
MD5 | 46a45775f0449e2a7bfa3cb78a268f47 |
|
BLAKE2b-256 | 6b0509aff2458bafbae414a2578a5a76dc39eaa019d2db283cb14c585f408481 |