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(未发布)

  • 初始版本

学分

International Traning Center of the ILO的支持下开发。

ITCILO - Logo

作者

这个产品是由domsense开发的。

Domsense Website

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Kafka producer大量内存使用(泄漏?)   java NullPointerException。。。正在插入数据但无法检索数据[Mysql DB]   java spring+jpa+hibernate=没有可用于当前线程的实际事务的EntityManager无法可靠地处理“persist”调用   getelementbyid在没有ID的情况下如何在java中使用GetElementsById   java有没有一种使用WatchService强制轮询的方法?   java将值从jframe传递给另一个jframe并使用它   Java/Groovy中带重试的反应式事件处理   具有两个包装器元素的java Jackson XML ArrayList输出   java总是在范围内使用不同的随机元素   取消选择java下拉列表值   多线程如何在Java中为对象的不同成员拥有不同的同步块   java如何使用多线程从文本文件中读取输入   java Spring启动附加崩溃命令   java使用公共或单独的actionPerfomed方法有什么区别   java用Spring3.0中的SpEL替换JSP中的EL   java作为windows服务运行应用程序时无法访问共享文件夹   java xml 1.1规范中的“解析数据”是什么意思?   以编程方式设置JComboBox索引时java触发ItemListener   java Android WebView:只加载HTML,不加载JS或CSS(在某些设备中)   Java:计算do/while循环的数量