如何基于DailyReflectionPage的日期字段实现分支审核工作流
实现方案
你当前使用的是Wagtail CMS的页面模型,可通过以下步骤完成按日期自动分配审核组的需求:
步骤1:后台创建对应的用户组和工作流
- 首先进入Wagtail后台的「用户组」管理页面,创建两个独立审核组:
- 上半年内容审核组:添加负责1-6月反思内容的审核人员,为其分配
DailyReflectionPage的审核、发布权限 - 下半年内容审核组:添加负责7-12月反思内容的审核人员,分配对应权限
- 上半年内容审核组:添加负责1-6月反思内容的审核人员,为其分配
- 进入「工作流」管理页面,创建两个对应审核工作流:
- 上半年审核工作流:设置slug为
first-half-review-workflow,审核步骤指定审核主体为「上半年内容审核组」,可根据需求设置审核通过后直接发布或进入其他环节 - 下半年审核工作流:设置slug为
second-half-review-workflow,审核步骤指定审核主体为「下半年内容审核组」
- 上半年审核工作流:设置slug为
步骤2:修改页面模型自动匹配工作流
在你的DailyReflectionPage模型中重写get_workflow方法,根据reflection_date的月份自动返回对应工作流,代码示例如下:
from wagtail.models import Workflow class DailyReflectionPage(Page): """ The Daily Reflection Model """ # 原有代码保持不变 reflection_date = models.DateField("Reflection Date", max_length=254) @cached_property def date(self): """ Returns the Reflection's date as a string in %Y-%m-%d format """ fmt = "%Y-%m-%d" date_as_string = (self.reflection_date).strftime(fmt) return date_as_string # 新增重写工作流获取方法 def get_workflow(self): # 根据日期月份匹配对应工作流 try: if self.reflection_date.month <= 6: return Workflow.objects.get(slug="first-half-review-workflow") else: return Workflow.objects.get(slug="second-half-review-workflow") except Workflow.DoesNotExist: # 工作流未创建时 fallback 到默认工作流 return super().get_workflow() def full_clean(self, *args, **kwargs): # 原有代码注意优化判断逻辑:字符串比较不要用is/is not,改为==/!= super(DailyReflectionPage, self).full_clean(*args, **kwargs) if self.slug != self.date: self.slug = self.date
步骤3:验证效果
配置完成后:
- 创建
reflection_date为1-6月的反思页面,提交审核后会自动进入上半年审核组的待办队列 - 创建
reflection_date为7-12月的反思页面,提交审核后会自动进入下半年审核组的待办队列
内容的提问来源于stack exchange,提问作者engineervix
相关产品推荐
相关产品推荐

