支持多个关联对象和快速非规范化查找的灵活活动流
actable的Python项目详细描述
- 注意:目前仅支持python 3.5+和django 1.9+(请参见issue #1)
python django的活动流。与其他活动流不同,它是 更灵活,每一个事件的设计支持任意数量的 关联对象。它也被设计成不引人注目的:任何你的模型 可以注册为活动生成器,只需生成 上下文或HTML片段的数据结构。
功能
- 每个事件都可以关联任意数量的对象
- 使用非规范化事件快速查找(无连接)
- 查找特定角色或对象的流
- 良好的测试覆盖率
- 方便的分页器帮助程序类,可在流中分页
- 示例项目
- 尚未实现:跟随
快速启动
概述:
- 安装actable并放入需求文件
- 添加到已安装的应用程序
三。选择几个重要的模型来实现Actable接口,以便 每次保存或更新都会生成一个事件
- 将这些模型添加到可操作的模型中
- 使用帮助类向视图中添加流
安装:
pip install actable
将其添加到已安装的应用程序中
INSTALLED_APPS=(...'actable.apps.ActableConfig',...)
选择一个或多个模型作为您的实际模型。当这些模型 更新或创建后,它将生成事件。这些事件可能涉及 其他对象的数目。
必须在可执行模型上至少实现两个方法。第一种方法 是get_actable_relations,它必须返回一个字典,其中 值是与此操作相关的模型实例。而不是 把自己限制在“actor,verb,object”,这允许你有任何数字 关系。每个模型实例都将收到 事件到其活动流。
示例:
classProjectBlogPost:defget_actable_relations(self,event):return{'subject':self.user,'object':self,'project':self.project,}
现在您必须从另外两个要实现的方法中选择一个。这些构成了 要为每个事件缓存的数据。
其中最通用的是返回包含 完全简单(可序列化)的数据类型。将以序列化方式存储 数据库中的表单。
示例:
classProjectBlogPost:defget_actable_json(self,event):verb='posted'ifevent.is_creationelse'updated'return{'subject':self.user.username,'subject_url':self.user.get_absolute_url(),'object':self.title,'object_url':self.get_absolute_url(),'project':self.project.title,'verb':verb,}
另一个选项是缓存可以生成任何 你认为合适的方式。
示例:
classProjectBlogPost:defget_actable_html(self,event):return'<a href="%s">%s</a> wrote %s'%(self.user.get_absolute_url(),self.user.username,self.title)
最后,您应该将新改进的列为ACTABLE_MODEL,如下所示:
ACTABLE_MODELS=['myapp.ProjectBlogPost',]
历史记录
0.1.0(2017-11-10)
- pypi上的第一个版本。