You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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扩展机制自行实现核心逻辑,步骤如下:

  1. 生成自定义扩展基础结构
    使用CKAN扩展脚手架创建基础扩展:

    paster create -t ckanext ckanext-datasetapproval_custom
    
  2. 重写数据集创建逻辑
    在扩展的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)
    
  3. 开发审核管理界面

    • 在扩展templates目录下新增moderation/pending_list.html模板,展示所有待审核数据集
    • 添加对应控制器逻辑,处理批准/驳回请求,将数据集状态改为active或rejected
  4. 配置审核权限
    在扩展的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)}
    
  5. 前端状态标识优化
    在数据集列表页面添加状态标签,让用户和管理员直观区分待审核的数据集

三、注意事项

  • 自定义实现时需严格遵循CKAN权限体系,避免出现越权操作
  • 测试时需覆盖不同角色的创建场景,确保仅组织编辑器的数据集触发审核流程
  • 使用第三方插件前,优先查看其最新版本的发布说明,确认适配CKAN 2.10.3

内容的提问来源于stack exchange,提问作者Gokul Ram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 01:43:18