跟踪标记为必读的内容项的用户查看
项目描述
在Plone中跟踪内容对象的读取。
特性
将对象标记为必须阅读
记录每个用户的内容对象首次读取记录
查询特定用户是否已阅读特定内容对象
按用户在特定时间窗口内的阅读次数列出前x个内容对象
兼容性
Plone 5.2和Plone 5.1用户应使用collective.mustread的2.x版本。Plone 5.0用户应使用collective.mustread的1.x版本。
限制
这不是一个安装后无需管理的Plone插件。
此产品默认情况下不跟踪阅读。它仅提供您可以用于此目的的后端。
此后端开发得到了Quaive的赞助。Quaive在其后端之上有自己的前端集成,以满足Quaive特定的用例。我们希望这个通用后端对其他Plone项目也有用。
理由
如果您想要一个简单的实现来跟踪阅读,您可以在每个内容对象上简单地创建一个存储用户ID列表的行为。
显然,这很快就会通过数据库写入来破坏您的网站。
因此,此后端设计为
与异步调度兼容,即使它本身不提供异步。
灵活,以支持多种策略场景,而无需重写或分叉整个后端。
使用可插拔的SQL后端而不是ZODB,既为了卸载写入,也为了更容易运行报告查询。
架构
请原谅您认为下面的架构过于复杂。请参阅上面的理由。
不包括在collective.mustread中的是前端和异步部分
[ user browser ] -> [ view ] -> [ async queue ]
本包中的后端实现提供以下内容
[ @@mustread-hit ] -> [behavior] -> [database store]
让我们从数据库端开始叙述。
数据库
数据库存储提供了一个丰富的API,如collective.mustread.interfaces.ITracker中指定。
默认情况下,collective.mustread将写入内存中的sqlite数据库。数据将在zope-server重启时丢失。
要持久化您的数据,您可以使用sqlite-database-file。
调用@@init-mustread-db视图(以创建位于BUILDOUT/var/mustread.db的sqlite数据库)
或手动在注册表中设置数据库路径,然后调用该@@init-mustread-db视图(例如,与其他插件共享 - 见Auditlog兼容性)
Auditlog兼容性
如果您在您的网站上运行collective.auditlog,您可能考虑使用相同的数据库(因此您只需要一个活动的数据库连接器)
SQL存储是从collective.auditlog实现派生出来的。我们设计collective.mustread以与collective.auditlog兼容,以至于如果可能,我们甚至会重用auditlog的数据库连接器。
数据库连接是通过注册记录collective.mustread.interfaces.IMustReadSettings配置的。您通常希望它包含与您的auditlog配置相同的值。
确保调用@@init-mustread-db以在数据库中创建此包所需的必要表/列。
行为
我们提供了两个行为
collective.mustread.maybe_must_read基本上只提供了一个复选框,您可以在其中指定内容对象是否为“必须阅读”。
collective.mustread.track_read_enabled激活了内容对象上的视图跟踪。我们跟踪视图,即使IMaybeMustRead没有将对象标记为“必须阅读”。我们这样做的原因是我们希望跟踪受欢迎的内容,即使项目不是强制性的。
通常,您会在您想要跟踪的内容类型上激活这两个行为。
这些行为默认不激活 - :default安装配置文件仅提供浏览器层和配置数据库连接器。选择并实施您自己的跟踪策略是您自己的项目的责任。
行为提供了一个灵活点,您可以在其中实现不同的跟踪策略。例如,您可以创建一个仅跟踪某些用户组读取行为的行为。您可以通过创建几行代码中的新行为,添加一些额外的业务逻辑来实现这一点,然后重用我们广泛的读取跟踪API来完成繁重的工作。
视图
对于所有ITrackReadEnabledMarker,即所有启用了collective.mustread.track_read_enabled行为的对象,都提供了一个辅助视图@@mustread-hit。点击该视图将在数据库中为内容对象存储一个读取记录。
在Quaive中,我们将从我们的异步堆栈中调用此视图。
您可以考虑提供一个新的小部件,它访问跟踪行为和API,而不是这个视图。但请注意,执行所有这些完整的同步操作是有风险的。YMMV。
还有一个特殊的调试视图@@mustread-hasread,它将告诉您,您登录的用户是否已经读取了您正在调用此视图的对象。
安装
通过将其添加到您的构建文件中安装collective.mustread
[buildout] ... eggs = collective.mustread
然后运行bin/buildout
或使用内置的构建文件
virtualenv . bin/pip install -r requirements.txt bin/buildout bootstrap bin/buildout
使用collective.mustread
在您的项目中实际使用collective.mustread所需的最小步骤
安装collective.mustread并配置数据库连接器。默认连接器是一个内存数据库,不适合生产环境。
通过GenericSetup在您想要跟踪的内容类型上激活collective.mustread.maybe_must_read和collective.mustread.track_read_enabled行为,或者自己编写自定义行为。
对于这些内容类型,在查看内容时点击${context/absolute_url}/@@mustread-hit。理想情况下,您将在这个阶段使用某种异步队列。
使用跟踪API查询数据库并根据您的业务逻辑调整自己的浏览器视图。获取跟踪器推荐的方法是
from collective.mustread.interfaces import ITracker from zope.component import getUtility tracker = getUtility(ITracker)
贡献
支持
如果您遇到问题,请通过问题跟踪器让我们知道。
许可证
该项目采用GPLv2许可证。
贡献者
Guido A.J. Stevens,guido.stevens@cosent.net
Harald Friessnegger,harald@webmeisterei.com
变更日志
2.2.1 (2023-06-06)
删除过时代码。
2.2.0 (2022-10-04)
使测试在Plone6上通过
2.1.0 (2022-08-05)
在跟踪器中添加了一个新的get_most_read_query方法,以帮助集成商。Ref. #17 [ale-rt]
2.0.2 (2021-06-28)
修复了一个过时警告[ale-rt]
2.0.1 (2021-05-20)
当尝试获取用户无法查看的对象时,most_read方法不会中断。修复#14 [ale-rt]
2.0.0 (2020-01-27)
在日志中指示数据库初始化结束[thet]
支持Plone 5.2和Python2.7,Python 3.6和Python 3.7 [ale-rt, thet]
1.1.1 (2019-03-25)
在添加必须阅读表列的升级步骤上不要中断 [ale-rt]
1.1.0 (2017-05-11)
通过注册表允许指定引擎参数 [ale-rt]
在ORM模型中删除不必要的列(site_name,title,info)[fRiSi]
实现了为某些用户安排项目为必读的API。(有关使用方法,请参阅collective.contentrules.mustread)
这需要新的数据库列。提供的升级步骤适用于sqlite数据库,但可能需要针对mysql或postgres进行更改。[fRiSi]
允许通过使用@@init-mustread-db视图创建和配置数据库文件 [fRiSI]
1.0.1 (2016-12-28)
数据库不可访问时提供详细的错误日志 [gyst]
微小的测试更改 [gyst]
1.0 (2016-11-24)
初始版本。 [gyst]
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分发
构建分发
collective.mustread-2.2.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b190c893181601adbd4dff667a8e6c95cb29f2b418dc6ef55eb25910e7e440b4 |
|
MD5 | 4ac8a52107863e1258727caf1a688268 |
|
BLAKE2b-256 | e3f0835d77c6a350ee167ce2cf992890ebbc2969baa6af0de0a6938ee5309065 |
collective.mustread-2.2.1-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8712333d85f3d168655c9ab60fd251b666cc4482969b7598c27e39979fc6ae39 |
|
MD5 | 52997f2bfcfa86388ec4655a9df0b4f3 |
|
BLAKE2b-256 | 93f3696bd3675c51eca6d72756aa9a6197c8852bb3a073b54912364af1813eab |