plone内容的读/未读状态
collective.readunread的Python项目详细描述
集合。已读
简介
此包提供plone对象的读/未读状态。
它将“readby”字段和适当的索引添加到用ireadbyprovider接口标记的任何对象。
如何使用
为了激活读/未读功能,目标对象必须实现:
collective.readunread.interfaces.IReadByProvider
您可以在包中添加zcml slug,例如:
<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]
因为我们有一个 将负责将创建者的用户ID推入“readby”字段
>>> from Products.Archetypes.event import ObjectInitializedEvent >>> from zope.event import notify >>> notify(ObjectInitializedEvent(doc))
我们可以使用Manager适配器处理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
- 修复配置文件名
- add.gitignore
1.0b3
- 缺少历史更新(尝试w/jarn.mkrelease)
1.0b2
- 更新的文档
1.0b1dev(未发布)
- 初始版本