Django-cms与编辑工作流
我需要在工作中为我的Django-CMS应用程序实现工作流程。不过从Django-CMS的功能列表中,我们可以看到:
编辑工作流程
用于发布和审批的工作流程。
我尝试搜索这个内容,但没有找到任何相关的信息。我查看了Django-CMS的文档(http://docs.django-cms.org/en/latest/index.html),也没有找到相关的内容。
有没有人知道Django-CMS中的工作流程(特别是针对页面系统)是怎么回事?
2 个回答
2016年的更新:
django CMS 3 还没有编辑工作流程
目前的django CMS 3(截至今天是v3.3.2)没有编辑工作流程。这个功能在2.3版本时被移除了,取而代之的是“简单发布”的概念(内容有两个版本:草稿和公开)。想了解更多,可以看看Divio的相关博客文章,里面讲了他们的动机。
在3.5版本中,计划通过一个插件提供一些扩展的审核支持,正如Angelo Dini在2012年原博客文章的评论中解释的。不过,别太指望这个功能。
编辑权限的控制
如果你想要一些编辑控制,比如“某些用户只能创建和编辑,但不能发布更改”,那么你运气不错。它的工作原理如下:
编辑控制的实现依赖于以下公式,这是一种三者结合:
“员工”状态 + 应用权限 + CMS权限
前两个是Django的基本概念(来自django.contrib.auth
,可以查看Django文档),最后一个则来自django CMS。这三者是如何协同工作的,下面解释一下:
- 没有“员工”状态,就完全不允许编辑,前端编辑的CMS工具栏也不会显示。需要注意的是,这个状态不能设置在用户组上,必须单独设置在每个用户身上。(真是的!)
- 如果没有将所有应用权限(cms、djangocms-、cmsplugin-、zinnia)分配给用户组(或直接给用户),就无法进行编辑;虽然CMS工具栏会显示,你通常可以双击内容开始编辑,但django CMS会告诉你没有权限。
- 如果缺少某些CMS权限(例如创建、发布),CMS工具栏上的按钮就会失效。就是这样。系统不会给用户发送任何提示信息,也不会解释发生了什么(确实很难提供一个通用的解决方案),当然也不会发送邮件或其他通知(当然,编辑工作流程是不存在的)。
换句话说,可以将用户分成不同的组,并允许他们执行一些特定的操作(仅编辑、仅发布等),但在django CMS v3.3中,用户通知这一工作流程的核心概念是不可用的。
编辑:有关详细信息和相关实现的演示,请查看django CMS开发者G+小组中的“django CMS的编辑工作流程”。
当你在Django-CMS中开启CMS_MODERATION功能时,你会在页面列表视图中看到每个页面旁边有三个小图标。从左到右,这些图标的作用是:
- 决定这个页面的修改是否需要管理员审核
- 决定这个页面下的子页面的修改是否需要管理员审核
- 决定这个页面的后代页面的修改是否需要管理员审核
当你创建或修改一个页面时,你可以保存它,并在你的网站上预览这个页面或新版本的页面,但在这个页面或新版本对普通用户可见之前,还是需要管理员的审核。