-
Notifications
You must be signed in to change notification settings - Fork 3
biohub.core.plugins
此模块为 biohub 插件系统的核心,包含了插件管理及插件开发中的诸多功能。
从技术层面上看,一个 Biohub Plugin 是一个 特殊的 django app,和普通 app 有着同等的地位,只不过其受 biohub 插件系统而不是 django 的管理。插件可以被热加载和热卸载(由于 python 模块机制的限制,事实上只有部分元素被卸载)。
插件的全局唯一标识符为其绝对模块路径(如 'biohub.forum'
),称为插件的 Plugin Name;其 default_app_config
需指向一个 biohub.core.plugins.config.PluginConfig
的子类(默认定义在 apps.py
中),被称为插件的 Plugin Config。插件开发者需手动填写 Plugin Config 中的空字段(作者、描述等信息)。
运行时,Biohub 会读取 config.json
中的 PLUGINS
字段(一个包含绝对模块路径的列表),并自动加载其中的插件。热加载/卸载插件时,配置文件中的 PLUGINS
字段也会相应地更新。
此模块定义了诸多用于创建/管理插件的命令。列表如下:
- newplugin
- mkpluginmigrations
- migrateplugin
- installplugin
- removeplugin
详细用法请参考 manage.py help <subcommand>
。
Plugin Config 的公共基类。
卸载异常。
加载异常。
加载插件时发生的数据库异常。
加载插件时更新 URLConf 过程中发生的异常。
插件管理器。
包含已安装插件信息的字典,键为 Plugin Name,值为包含插件额外信息(作者、描述等)的字典。
标识是否正在安装/卸载。
标识是否有插件在 migrate models。
卸载 plugin_names
中标识的插件。update_config
标识是否将结果写回 config.json
。invalidate_urlconf
标识是否更新 URLConf。
.install(plugin_names, update_config=False, invalidate_urlconf=True, migrate_database=False, migrate_options=None)
安装 plugin_names
中标识的插件。update_config
与 invalidate_urlconf
意义同上,migrate_database
标识是否为新安装的插件 migrate models。migrate_options
为一个字典,为 migration 提供可选的参数,详见 prepare_database
。
.prepare_database(self, plugin_names, new_process=False, no_input=False, no_output=False, verbosity=0, test=False)
为 plugin_names
中指定的插件执行 migration 操作。被指定的插件必须已经被安装。new_process
标识是否在子进程中执行 migration 操作。其他参数意义同 migrateplugin
命令。