为CKAN扩展默认功能的自定义管理面板
项目描述
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",
),
],
)
部分的架构在 SectionConfig
和 ConfigurationItem
中概述(见这里)。您可以导入这些结构并使用它们来组装部分,或者只需返回一个反映相同结构的字典。此方法与上述描述相同
@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
-
激活您的CKAN虚拟环境,例如
。/usr/lib/ckan/default/bin/activate
-
克隆源并在虚拟环境中安装
git clone https://github.com/mutantsan/ckanext-admin-panel.git cd ckanext-admin-panel pip install -e . pip install -r requirements.txt
-
将
admin_panel admin_panel_cron
添加到CKAN配置文件中的ckan.plugins
设置(默认配置文件位于/etc/ckan/default/ckan.ini
)。 -
重新启动CKAN。例如,如果您在Ubuntu上使用Apache部署了CKAN
sudo service apache2 reload
配置设置
目前无
启用日志记录
要将日志消息存储在数据库中,您必须启用 admin_panel_log
扩展,初始化数据库日志表,并在您的 'ckan.ini' 文件中创建一个处理程序。
-
将
admin_panel_log
添加到CKAN配置文件中的ckan.plugins
设置。 -
使用以下命令初始化所有缺失的表:
ckan db pending-migrations --apply
-
要注册处理程序,必须在您的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"}
-
日志处理程序还必须包含在
[handlers]
部分。[handlers] keys = console, dbHandler
-
最后,您需要将我们的处理程序添加到您需要的记录器。例如,如果您只想记录
ckan
日志,请这样做[logger_ckan] level = INFO handlers = console, dbHandler
启用CRON日志记录
为cron作业日志注册一个单独的记录器。如果您想通过UI访问日志,则必须首先启动数据库处理程序。否则,您只能在CKAN日志文件中看到日志。
- 定义记录器
[logger_ap_cron] level = DEBUG handlers = console, dbHandler qualname = ap_cron propagate = 0
- 通过在
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
许可证
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分布
构建分布
ckanext_admin_panel-1.0.14.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b9442fa55d9ce164825e3d92badc01b2ede0c4fb9a9a06850f4171ed8d01e5da |
|
MD5 | c49ef2521a2390e5146f6c2fd32981cf |
|
BLAKE2b-256 | 37685b40a51d0e32859cf81c8fc4b08a8b322269e5c930297dd414e003c46352 |
ckanext_admin_panel-1.0.14-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 34d967d963178d74ae57b32296c5f1d72387fb98a3178330c1886817d19fe1ba |
|
MD5 | efc40b9573b1318662de42292fb654f0 |
|
BLAKE2b-256 | c470812477f2099e10f2956a2f5c4784df5022784df76ebcb738bfbdffd2a01c |