跳转到主要内容

为CKAN扩展默认功能的自定义管理面板

项目描述

Tests

ckanext-admin-panel

CKAN下一代管理界面。

内容

待办事项

此扩展处于开发中,因此有很多事情要做

  • CKAN表单
    • 如果我们在管理面板中编辑实体,我们想做什么?使用默认表单还是替换为管理版本?
  • 用户
    • 添加 用户编辑 页面
  • 最近的日志消息
    • 我们有某些类型,我们不想包括在列表中。例如xloader资源。研究我们如何更好地处理它们。
    • 重新设计分页方法,因为当前简单的方法在大量数据上会非常慢
  • 重写 user_list 操作。目前它只是contrib的一个副本,只有一个小的更改。也许写我们自己的通用版本是个好主意。
  • 考虑配置部分页面。我们是否需要一个单独的页面来表示一个部分?
  • 扩展 页面上工作。我们想要什么:替换 status_show。这个页面应该更具有信息性。在这里显示我们使用及其版本的扩展。目前我们还没有从扩展中检索版本的标准化机制,考虑一下。
  • 可用更新? 页面上进行工作。向用户展示他是否可以升级扩展或CKAN到新版本。
  • 外观 页面上进行工作。待办事项
  • 帮助 页面上进行工作。待办事项

注册配置部分

我们使用 ISignal 接口来收集配置部分。例如,从您的扩展中注册配置部分

from __future__ import annotations

import ckan.types as types
import ckan.plugins as p
import ckan.plugins.toolkit as tk

import ckanext.ap_main.types as ap_types


class ExamplePlugin(p.SingletonPlugin):
    ...
    p.implements(p.ISignal)

    ...

    # ISignal

    def get_signal_subscriptions(self) -> types.SignalMapping:
        return {
            tk.signals.ckanext.signal("ap_main:collect_config_sections"): [
                self.collect_config_sections_subs
            ],
        }

    @staticmethod
    def collect_config_sections_subs(sender: None):
        return ap_types.SectionConfig(
            name="Example plugin configuration",
            configs=[
                ap_types.ConfigurationItem(
                    name="Configuration",
                    blueprint="example_plugin.config,
                    info="Basic configuration options",
                ),
            ],
        )

部分的架构在 SectionConfigConfigurationItem 中概述(见这里)。您可以导入这些结构并使用它们来组装部分,或者只需返回一个反映相同结构的字典。此方法与上述描述相同

@staticmethod
def collect_config_sections_subs(sender: None):
    return {
        "name": "Example plugin configuration",
        "configs": [
            {
                "name": "Configuration",
                "blueprint": "example_plugin.config",
                "info": "Basic configuration options",
            },
        ],
    }

如果指定的 name 部分已经被另一个插件注册,配置选项将被包含在内。

ConfigurationItem 的结构如下

  • name - 定义配置部分链接的名称
  • blueprint - 指示配置页面蓝图
  • info(可选,默认:无描述)- 为配置链接提供描述

要求

与CKAN核心版本兼容性

CKAN版本 兼容吗?
2.9 不兼容
2.10 兼容
2.11 兼容

安装

安装 ckanext-admin-panel

  1. 激活您的CKAN虚拟环境,例如

    。/usr/lib/ckan/default/bin/activate

  2. 克隆源并在虚拟环境中安装

    git clone https://github.com/mutantsan/ckanext-admin-panel.git cd ckanext-admin-panel pip install -e . pip install -r requirements.txt

  3. admin_panel admin_panel_cron 添加到CKAN配置文件中的 ckan.plugins 设置(默认配置文件位于 /etc/ckan/default/ckan.ini)。

  4. 重新启动CKAN。例如,如果您在Ubuntu上使用Apache部署了CKAN

    sudo service apache2 reload

配置设置

目前无

启用日志记录

要将日志消息存储在数据库中,您必须启用 admin_panel_log 扩展,初始化数据库日志表,并在您的 'ckan.ini' 文件中创建一个处理程序。

  1. admin_panel_log 添加到CKAN配置文件中的 ckan.plugins 设置。

  2. 使用以下命令初始化所有缺失的表:ckan db pending-migrations --apply

  3. 要注册处理程序,必须在您的CKAN配置文件中指定它。由于一些CKAN特定的原因,日志记录器需要知道数据库URI以初始化自身。通过 kwargs 选项提供。

    [handler_dbHandler]
    class = ckanext.ap_log.log_handlers.DatabaseHandler
    formatter = generic
    level = NOTSET
    kwargs={"db_uri": "postgresql://ckan_default:pass@localhost/master"}
    
  4. 日志处理程序还必须包含在 [handlers] 部分。

    [handlers]
    keys = console, dbHandler
    
  5. 最后,您需要将我们的处理程序添加到您需要的记录器。例如,如果您只想记录 ckan 日志,请这样做

    [logger_ckan]
    level = INFO
    handlers = console, dbHandler
    

启用CRON日志记录

为cron作业日志注册一个单独的记录器。如果您想通过UI访问日志,则必须首先启动数据库处理程序。否则,您只能在CKAN日志文件中看到日志。

  1. 定义记录器
    [logger_ap_cron]
    level = DEBUG
    handlers = console, dbHandler
    qualname = ap_cron
    propagate = 0
    
  2. 通过在 loggers 部分指定它来使用新创建的记录器。
    [loggers]
    keys = root, ckan, ckanext, werkzeug, flask_app, ap_cron
    

用户CRON管理器

调度

每个cron作业都可以从cron管理器页面手动触发。但是,为CKAN中创建的所有作业安排单个命令以自动触发所有作业至关重要。例如

*/10 * * * * /usr/lib/ckan/default/bin/ckan -c /etc/ckan/default/production.ini ap-cron trigger-jobs

此命令每10分钟检查一次所有作业,以确定是否应该再次运行它们。如果不安排此命令,您可以通过通过用户界面单击 运行 按钮,手动启动特定的作业。或者,您可以单击 运行活动作业 按钮来执行所有计划中的作业。

创建CRON作业

要创建cron作业,请转到cron管理器页面并单击 添加cron作业 按钮。

每个作业必须包含以下组件

  • 名称:主要用于UI识别的标签。
  • 操作:一个或多个将被执行的CKAN操作。
  • 数据:提供初始操作的参数的JSON格式数据。
  • 作业超时:作业在被视为失败之前允许的最大运行时间。
  • 计划:指定作业执行频率和时间的cron表达式。

请注意,出于安全原因,不允许在cron作业中使用控制台命令。相反,只能执行CKAN操作。您可以链式连接多个操作;每个后续操作都将接收前一个操作的结果作为其参数。

开发者安装

要为开发安装ckanext-admin-panel,请激活您的CKAN虚拟环境,然后执行

git clone https://github.com/mutantsan/ckanext-admin-panel.git
cd ckanext-admin-panel
python setup.py develop
pip install -r dev-requirements.txt

测试

要运行测试,执行

pytest --ckan-ini=test.ini

许可证

AGPL

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

ckanext_admin_panel-1.0.14.tar.gz (58.7 kB 查看哈希值)

上传时间:

构建分布

ckanext_admin_panel-1.0.14-py3-none-any.whl (76.3 kB 查看哈希值)

上传时间: Python 3

由以下机构支持

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误记录StatusPageStatusPage状态页面