CKAN 2.10.3数据集审批配置:求兼容插件或实现方案
适用于CKAN 2.10.3的数据集审批方案
一、兼容的第三方插件推荐
ckanext-moderation:维护活跃度高,已适配CKAN 2.10+版本。核心功能包括:
- 可配置指定角色(如组织编辑器)创建的数据集自动进入待审核状态
- 支持管理员/指定审核角色执行批准、驳回操作,可添加审核备注
- 数据集列表会明确区分待审核、已批准、已驳回三种状态
- 安装后通过修改
ckan.ini开启功能:ckan.plugins = moderation ckan.moderation.required_roles = editor # 指定需触发审核的角色 ckan.moderation.allowed_roles = admin # 指定拥有审核权限的角色
ckanext-review:轻量级审核插件,适配CKAN 2.9+,可无缝兼容2.10.3。功能特点:
- 支持自定义数据集状态字段(pending/approved/rejected)
- 可配置组织级审核规则,仅针对组织内编辑器创建的数据集触发审核流程
- 提供后台审核操作界面,支持批量处理待审核数据集
二、自定义实现方案(无依赖插件)
如果找不到合适的插件,可通过CKAN扩展机制自行实现核心逻辑,步骤如下:
生成自定义扩展基础结构
使用CKAN扩展脚手架创建基础扩展:paster create -t ckanext ckanext-datasetapproval_custom重写数据集创建逻辑
在扩展的logic/action/create.py中修改package_create动作,判断创建者角色并设置状态:from ckan.logic import action from ckan.plugins import toolkit @toolkit.chained_action def package_create(next_action, context, data_dict): user = context['user'] org_id = data_dict.get('owner_org') if org_id: member = toolkit.get_action('member_show')(context, {'id': org_id, 'username': user}) if member['capacity'] == 'editor': # 将组织编辑器创建的数据集设为待审核状态 data_dict['state'] = 'pending' return next_action(context, data_dict)开发审核管理界面
- 在扩展
templates目录下新增moderation/pending_list.html模板,展示所有待审核数据集 - 添加对应控制器逻辑,处理批准/驳回请求,将数据集状态改为
active或rejected
- 在扩展
配置审核权限
在扩展的plugin.py中注册权限,限制仅管理员可执行审核操作:def get_auth_functions(self): return { 'package_approve': self.package_approve_auth, 'package_reject': self.package_reject_auth, } def package_approve_auth(self, context, data_dict): return {'success': toolkit.check_access('sysadmin', context, data_dict)} def package_reject_auth(self, context, data_dict): return {'success': toolkit.check_access('sysadmin', context, data_dict)}前端状态标识优化
在数据集列表页面添加状态标签,让用户和管理员直观区分待审核的数据集
三、注意事项
- 自定义实现时需严格遵循CKAN权限体系,避免出现越权操作
- 测试时需覆盖不同角色的创建场景,确保仅组织编辑器的数据集触发审核流程
- 使用第三方插件前,优先查看其最新版本的发布说明,确认适配CKAN 2.10.3
内容的提问来源于stack exchange,提问作者Gokul Ram
相关产品推荐
相关产品推荐

