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.model_runtime.utils.encoders import jsonable_encoder
from core.plugin.impl.exc import PluginDaemonClientSideError from core.plugin.impl.exc import PluginDaemonClientSideError
from libs.login import login_required 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_auto_upgrade_service import PluginAutoUpgradeService
from services.plugin.plugin_permission_service import PluginPermissionService from services.plugin.plugin_permission_service import PluginPermissionService
from services.plugin.plugin_service import PluginService from services.plugin.plugin_service import PluginService
@ -494,7 +494,7 @@ class PluginFetchPermissionApi(Resource):
) )
class PluginChangeAutoUpgradeStrategyApi(Resource): class PluginChangePreferencesApi(Resource):
@setup_required @setup_required
@login_required @login_required
@account_initialization_required @account_initialization_required
@ -504,55 +504,90 @@ class PluginChangeAutoUpgradeStrategyApi(Resource):
raise Forbidden() raise Forbidden()
req = reqparse.RequestParser() req = reqparse.RequestParser()
req.add_argument("strategy_setting", type=str, required=True, location="json") req.add_argument("permission", type=dict, required=True, location="json")
req.add_argument("upgrade_time_of_day", type=int, required=True, location="json") req.add_argument("auto_upgrade", type=dict, 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")
args = req.parse_args() args = req.parse_args()
tenant_id = user.current_tenant_id tenant_id = user.current_tenant_id
return { permission = args["permission"]
"success": PluginAutoUpgradeService.change_strategy(
tenant_id, install_permission = TenantPluginPermission.InstallPermission(permission.get("install_permission", "everyone"))
args["strategy_setting"], debug_permission = TenantPluginPermission.DebugPermission(permission.get("debug_permission", "everyone"))
args["upgrade_time_of_day"],
args["upgrade_mode"], auto_upgrade = args["auto_upgrade"]
args["exclude_plugins"],
args["include_plugins"], 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 @setup_required
@login_required @login_required
@account_initialization_required @account_initialization_required
def get(self): def get(self):
tenant_id = current_user.current_tenant_id tenant_id = current_user.current_tenant_id
strategy = PluginAutoUpgradeService.get_strategy(tenant_id) permission = PluginPermissionService.get_permission(tenant_id)
if not strategy:
return jsonable_encoder( if not permission:
{ permission = {
"strategy_setting": "fix_only", "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_time_of_day": 0,
"upgrade_mode": "exclude", "upgrade_mode": TenantPluginAutoUpgradeStrategy.UpgradeMode.EXCLUDE,
"exclude_plugins": [], "exclude_plugins": [],
"include_plugins": [], "include_plugins": [],
} }
) else:
auto_upgrade = {
return jsonable_encoder( "strategy_setting": auto_upgrade.strategy_setting,
{ "upgrade_time_of_day": auto_upgrade.upgrade_time_of_day,
"strategy_setting": strategy.strategy_setting, "upgrade_mode": auto_upgrade.upgrade_mode,
"upgrade_time_of_day": strategy.upgrade_time_of_day, "exclude_plugins": auto_upgrade.exclude_plugins,
"upgrade_mode": strategy.upgrade_mode, "include_plugins": auto_upgrade.include_plugins,
"exclude_plugins": strategy.exclude_plugins,
"include_plugins": strategy.include_plugins,
} }
)
return jsonable_encoder({"permission": permission, "auto_upgrade": auto_upgrade})
api.add_resource(PluginDebuggingKeyApi, "/workspaces/current/plugin/debugging-key") 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(PluginUninstallApi, "/workspaces/current/plugin/uninstall")
api.add_resource(PluginFetchMarketplacePkgApi, "/workspaces/current/plugin/marketplace/pkg") api.add_resource(PluginFetchMarketplacePkgApi, "/workspaces/current/plugin/marketplace/pkg")
api.add_resource(PluginChangePermissionApi, "/workspaces/current/plugin/permission/change") api.add_resource(PluginChangePermissionApi, "/workspaces/current/plugin/permission/change") # deprecated
api.add_resource(PluginFetchPermissionApi, "/workspaces/current/plugin/permission/fetch") api.add_resource(PluginFetchPermissionApi, "/workspaces/current/plugin/permission/fetch") # deprecated
api.add_resource(PluginFetchAutoUpgradeStrategyApi, "/workspaces/current/plugin/autoupgrade/fetch") api.add_resource(PluginFetchPreferencesApi, "/workspaces/current/plugin/preferences/fetch")
api.add_resource(PluginChangeAutoUpgradeStrategyApi, "/workspaces/current/plugin/autoupgrade/change") api.add_resource(PluginChangePreferencesApi, "/workspaces/current/plugin/preferences/change")

View File

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