feat: combine plugin preferences apis

This commit is contained in:
Junyan Qin 2025-06-24 15:44:03 +08:00
parent e6e6504ae4
commit c983967d82
No known key found for this signature in database
GPG Key ID: 22FE3AFADC710CEB
2 changed files with 77 additions and 41 deletions

View File

@ -12,7 +12,7 @@ from controllers.console.wraps import account_initialization_required, setup_req
from core.model_runtime.utils.encoders import jsonable_encoder
from core.plugin.impl.exc import PluginDaemonClientSideError
from libs.login import login_required
from models.account import TenantPluginPermission
from models.account import TenantPluginAutoUpgradeStrategy, TenantPluginPermission
from services.plugin.plugin_auto_upgrade_service import PluginAutoUpgradeService
from services.plugin.plugin_permission_service import PluginPermissionService
from services.plugin.plugin_service import PluginService
@ -494,7 +494,7 @@ class PluginFetchPermissionApi(Resource):
)
class PluginChangeAutoUpgradeStrategyApi(Resource):
class PluginChangePreferencesApi(Resource):
@setup_required
@login_required
@account_initialization_required
@ -504,55 +504,90 @@ class PluginChangeAutoUpgradeStrategyApi(Resource):
raise Forbidden()
req = reqparse.RequestParser()
req.add_argument("strategy_setting", type=str, required=True, location="json")
req.add_argument("upgrade_time_of_day", type=int, required=True, location="json")
req.add_argument("upgrade_mode", type=str, required=True, location="json")
req.add_argument("exclude_plugins", type=list, required=True, location="json")
req.add_argument("include_plugins", type=list, required=True, location="json")
req.add_argument("permission", type=dict, required=True, location="json")
req.add_argument("auto_upgrade", type=dict, required=True, location="json")
args = req.parse_args()
tenant_id = user.current_tenant_id
return {
"success": PluginAutoUpgradeService.change_strategy(
tenant_id,
args["strategy_setting"],
args["upgrade_time_of_day"],
args["upgrade_mode"],
args["exclude_plugins"],
args["include_plugins"],
)
}
permission = args["permission"]
install_permission = TenantPluginPermission.InstallPermission(permission.get("install_permission", "everyone"))
debug_permission = TenantPluginPermission.DebugPermission(permission.get("debug_permission", "everyone"))
auto_upgrade = args["auto_upgrade"]
strategy_setting = TenantPluginAutoUpgradeStrategy.StrategySetting(
auto_upgrade.get("strategy_setting", "fix_only")
)
upgrade_time_of_day = auto_upgrade.get("upgrade_time_of_day", 0)
upgrade_mode = TenantPluginAutoUpgradeStrategy.UpgradeMode(auto_upgrade.get("upgrade_mode", "exclude"))
exclude_plugins = auto_upgrade.get("exclude_plugins", [])
include_plugins = auto_upgrade.get("include_plugins", [])
# set permission
set_permission_result = PluginPermissionService.change_permission(
tenant_id,
install_permission,
debug_permission,
)
if not set_permission_result:
return jsonable_encoder({"success": False, "message": "Failed to set permission"})
# set auto upgrade strategy
set_auto_upgrade_strategy_result = PluginAutoUpgradeService.change_strategy(
tenant_id,
strategy_setting,
upgrade_time_of_day,
upgrade_mode,
exclude_plugins,
include_plugins,
)
if not set_auto_upgrade_strategy_result:
return jsonable_encoder({"success": False, "message": "Failed to set auto upgrade strategy"})
return jsonable_encoder({"success": True})
class PluginFetchAutoUpgradeStrategyApi(Resource):
class PluginFetchPreferencesApi(Resource):
@setup_required
@login_required
@account_initialization_required
def get(self):
tenant_id = current_user.current_tenant_id
strategy = PluginAutoUpgradeService.get_strategy(tenant_id)
if not strategy:
return jsonable_encoder(
{
"strategy_setting": "fix_only",
"upgrade_time_of_day": 0,
"upgrade_mode": "exclude",
"exclude_plugins": [],
"include_plugins": [],
}
)
permission = PluginPermissionService.get_permission(tenant_id)
return jsonable_encoder(
{
"strategy_setting": strategy.strategy_setting,
"upgrade_time_of_day": strategy.upgrade_time_of_day,
"upgrade_mode": strategy.upgrade_mode,
"exclude_plugins": strategy.exclude_plugins,
"include_plugins": strategy.include_plugins,
if not permission:
permission = {
"install_permission": TenantPluginPermission.InstallPermission.EVERYONE,
"debug_permission": TenantPluginPermission.DebugPermission.EVERYONE,
}
)
else:
permission = {
"install_permission": permission.install_permission,
"debug_permission": permission.debug_permission,
}
auto_upgrade = PluginAutoUpgradeService.get_strategy(tenant_id)
if not auto_upgrade:
auto_upgrade = {
"strategy_setting": TenantPluginAutoUpgradeStrategy.StrategySetting.FIX_ONLY,
"upgrade_time_of_day": 0,
"upgrade_mode": TenantPluginAutoUpgradeStrategy.UpgradeMode.EXCLUDE,
"exclude_plugins": [],
"include_plugins": [],
}
else:
auto_upgrade = {
"strategy_setting": auto_upgrade.strategy_setting,
"upgrade_time_of_day": auto_upgrade.upgrade_time_of_day,
"upgrade_mode": auto_upgrade.upgrade_mode,
"exclude_plugins": auto_upgrade.exclude_plugins,
"include_plugins": auto_upgrade.include_plugins,
}
return jsonable_encoder({"permission": permission, "auto_upgrade": auto_upgrade})
api.add_resource(PluginDebuggingKeyApi, "/workspaces/current/plugin/debugging-key")
@ -577,8 +612,8 @@ api.add_resource(PluginDeleteInstallTaskItemApi, "/workspaces/current/plugin/tas
api.add_resource(PluginUninstallApi, "/workspaces/current/plugin/uninstall")
api.add_resource(PluginFetchMarketplacePkgApi, "/workspaces/current/plugin/marketplace/pkg")
api.add_resource(PluginChangePermissionApi, "/workspaces/current/plugin/permission/change")
api.add_resource(PluginFetchPermissionApi, "/workspaces/current/plugin/permission/fetch")
api.add_resource(PluginChangePermissionApi, "/workspaces/current/plugin/permission/change") # deprecated
api.add_resource(PluginFetchPermissionApi, "/workspaces/current/plugin/permission/fetch") # deprecated
api.add_resource(PluginFetchAutoUpgradeStrategyApi, "/workspaces/current/plugin/autoupgrade/fetch")
api.add_resource(PluginChangeAutoUpgradeStrategyApi, "/workspaces/current/plugin/autoupgrade/change")
api.add_resource(PluginFetchPreferencesApi, "/workspaces/current/plugin/preferences/fetch")
api.add_resource(PluginChangePreferencesApi, "/workspaces/current/plugin/preferences/change")

View File

@ -305,6 +305,7 @@ class TenantPluginAutoUpgradeStrategy(Base):
LATEST = "latest"
class UpgradeMode(enum.StrEnum):
ALL = "all"
PARTIAL = "partial"
EXCLUDE = "exclude"