fix plugin
This commit is contained in:
parent
87e50b72da
commit
25c1f1e32b
@ -30,6 +30,25 @@ def installed_plugins(db: Session = Depends(get_db),
|
|||||||
return SystemConfigOper(db).get(SystemConfigKey.UserInstalledPlugins) or []
|
return SystemConfigOper(db).get(SystemConfigKey.UserInstalledPlugins) or []
|
||||||
|
|
||||||
|
|
||||||
|
@router.get("/install/{plugin_id}", summary="安装插件", response_model=schemas.Response)
|
||||||
|
def install_plugin(plugin_id: str,
|
||||||
|
db: Session = Depends(get_db),
|
||||||
|
_: schemas.TokenPayload = Depends(verify_token)) -> Any:
|
||||||
|
"""
|
||||||
|
安装插件
|
||||||
|
"""
|
||||||
|
# 已安装插件
|
||||||
|
install_plugins = SystemConfigOper(db).get(SystemConfigKey.UserInstalledPlugins) or []
|
||||||
|
# 安装插件
|
||||||
|
if plugin_id not in install_plugins:
|
||||||
|
install_plugins.append(plugin_id)
|
||||||
|
# 保存设置
|
||||||
|
SystemConfigOper(db).set(SystemConfigKey.UserInstalledPlugins, install_plugins)
|
||||||
|
# 重载插件管理器
|
||||||
|
PluginManager().init_config()
|
||||||
|
return schemas.Response(success=True)
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{plugin_id}", summary="获取插件配置")
|
@router.get("/{plugin_id}", summary="获取插件配置")
|
||||||
def plugin_config(plugin_id: str, _: schemas.TokenPayload = Depends(verify_token)) -> dict:
|
def plugin_config(plugin_id: str, _: schemas.TokenPayload = Depends(verify_token)) -> dict:
|
||||||
"""
|
"""
|
||||||
@ -48,24 +67,6 @@ def set_plugin_config(plugin_id: str, conf: dict,
|
|||||||
return schemas.Response(success=True)
|
return schemas.Response(success=True)
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{plugin_id}/install", summary="安装插件", response_model=schemas.Response)
|
|
||||||
def install_plugin(plugin_id: str,
|
|
||||||
db: Session = Depends(get_db),
|
|
||||||
_: schemas.TokenPayload = Depends(verify_token)) -> Any:
|
|
||||||
"""
|
|
||||||
安装插件
|
|
||||||
"""
|
|
||||||
# 已安装插件
|
|
||||||
install_plugins = SystemConfigOper(db).get(SystemConfigKey.UserInstalledPlugins) or []
|
|
||||||
# 安装插件
|
|
||||||
install_plugins.append(plugin_id)
|
|
||||||
# 保存设置
|
|
||||||
SystemConfigOper(db).set(SystemConfigKey.UserInstalledPlugins, install_plugins)
|
|
||||||
# 重载插件管理器
|
|
||||||
PluginManager().init_config()
|
|
||||||
return schemas.Response(success=True)
|
|
||||||
|
|
||||||
|
|
||||||
@router.delete("/{plugin_id}", summary="卸载插件", response_model=schemas.Response)
|
@router.delete("/{plugin_id}", summary="卸载插件", response_model=schemas.Response)
|
||||||
def uninstall_plugin(plugin_id: str,
|
def uninstall_plugin(plugin_id: str,
|
||||||
db: Session = Depends(get_db),
|
db: Session = Depends(get_db),
|
||||||
|
@ -42,6 +42,8 @@ class PluginManager(metaclass=Singleton):
|
|||||||
"app.plugins",
|
"app.plugins",
|
||||||
filter_func=lambda _, obj: hasattr(obj, 'init_plugin')
|
filter_func=lambda _, obj: hasattr(obj, 'init_plugin')
|
||||||
)
|
)
|
||||||
|
# 已安装插件
|
||||||
|
installed_plugins = self.systemconfig.get(SystemConfigKey.UserInstalledPlugins) or []
|
||||||
# 排序
|
# 排序
|
||||||
plugins.sort(key=lambda x: x.plugin_order if hasattr(x, "plugin_order") else 0)
|
plugins.sort(key=lambda x: x.plugin_order if hasattr(x, "plugin_order") else 0)
|
||||||
self._running_plugins = {}
|
self._running_plugins = {}
|
||||||
@ -51,6 +53,9 @@ class PluginManager(metaclass=Singleton):
|
|||||||
try:
|
try:
|
||||||
# 存储Class
|
# 存储Class
|
||||||
self._plugins[plugin_id] = plugin
|
self._plugins[plugin_id] = plugin
|
||||||
|
# 未安装的不加载
|
||||||
|
if plugin_id not in installed_plugins:
|
||||||
|
continue
|
||||||
# 生成实例
|
# 生成实例
|
||||||
plugin_obj = plugin()
|
plugin_obj = plugin()
|
||||||
# 生效插件配置
|
# 生效插件配置
|
||||||
|
Loading…
x
Reference in New Issue
Block a user