fix tenant not exist (#26066)

This commit is contained in:
Jyong
2025-09-22 20:50:30 +08:00
committed by GitHub
parent c60c754ac9
commit cd40cde790

View File

@@ -1448,41 +1448,52 @@ def transform_datasource_credentials():
notion_credentials_tenant_mapping[tenant_id] = [] notion_credentials_tenant_mapping[tenant_id] = []
notion_credentials_tenant_mapping[tenant_id].append(notion_credential) notion_credentials_tenant_mapping[tenant_id].append(notion_credential)
for tenant_id, notion_tenant_credentials in notion_credentials_tenant_mapping.items(): for tenant_id, notion_tenant_credentials in notion_credentials_tenant_mapping.items():
# check notion plugin is installed tenant = db.session.query(Tenant).filter_by(id=tenant_id).first()
installed_plugins = installer_manager.list_plugins(tenant_id) if not tenant:
installed_plugins_ids = [plugin.plugin_id for plugin in installed_plugins] continue
if notion_plugin_id not in installed_plugins_ids: try:
if notion_plugin_unique_identifier: # check notion plugin is installed
# install notion plugin installed_plugins = installer_manager.list_plugins(tenant_id)
PluginService.install_from_marketplace_pkg(tenant_id, [notion_plugin_unique_identifier]) installed_plugins_ids = [plugin.plugin_id for plugin in installed_plugins]
auth_count = 0 if notion_plugin_id not in installed_plugins_ids:
for notion_tenant_credential in notion_tenant_credentials: if notion_plugin_unique_identifier:
auth_count += 1 # install notion plugin
# get credential oauth params PluginService.install_from_marketplace_pkg(tenant_id, [notion_plugin_unique_identifier])
access_token = notion_tenant_credential.access_token auth_count = 0
# notion info for notion_tenant_credential in notion_tenant_credentials:
notion_info = notion_tenant_credential.source_info auth_count += 1
workspace_id = notion_info.get("workspace_id") # get credential oauth params
workspace_name = notion_info.get("workspace_name") access_token = notion_tenant_credential.access_token
workspace_icon = notion_info.get("workspace_icon") # notion info
new_credentials = { notion_info = notion_tenant_credential.source_info
"integration_secret": encrypter.encrypt_token(tenant_id, access_token), workspace_id = notion_info.get("workspace_id")
"workspace_id": workspace_id, workspace_name = notion_info.get("workspace_name")
"workspace_name": workspace_name, workspace_icon = notion_info.get("workspace_icon")
"workspace_icon": workspace_icon, new_credentials = {
} "integration_secret": encrypter.encrypt_token(tenant_id, access_token),
datasource_provider = DatasourceProvider( "workspace_id": workspace_id,
provider="notion_datasource", "workspace_name": workspace_name,
tenant_id=tenant_id, "workspace_icon": workspace_icon,
plugin_id=notion_plugin_id, }
auth_type=oauth_credential_type.value, datasource_provider = DatasourceProvider(
encrypted_credentials=new_credentials, provider="notion_datasource",
name=f"Auth {auth_count}", tenant_id=tenant_id,
avatar_url=workspace_icon or "default", plugin_id=notion_plugin_id,
is_default=False, auth_type=oauth_credential_type.value,
encrypted_credentials=new_credentials,
name=f"Auth {auth_count}",
avatar_url=workspace_icon or "default",
is_default=False,
)
db.session.add(datasource_provider)
deal_notion_count += 1
except Exception as e:
click.echo(
click.style(
f"Error transforming notion credentials: {str(e)}, tenant_id: {tenant_id}", fg="red"
)
) )
db.session.add(datasource_provider) continue
deal_notion_count += 1
db.session.commit() db.session.commit()
# deal firecrawl credentials # deal firecrawl credentials
deal_firecrawl_count = 0 deal_firecrawl_count = 0
@@ -1495,37 +1506,48 @@ def transform_datasource_credentials():
firecrawl_credentials_tenant_mapping[tenant_id] = [] firecrawl_credentials_tenant_mapping[tenant_id] = []
firecrawl_credentials_tenant_mapping[tenant_id].append(firecrawl_credential) firecrawl_credentials_tenant_mapping[tenant_id].append(firecrawl_credential)
for tenant_id, firecrawl_tenant_credentials in firecrawl_credentials_tenant_mapping.items(): for tenant_id, firecrawl_tenant_credentials in firecrawl_credentials_tenant_mapping.items():
# check firecrawl plugin is installed tenant = db.session.query(Tenant).filter_by(id=tenant_id).first()
installed_plugins = installer_manager.list_plugins(tenant_id) if not tenant:
installed_plugins_ids = [plugin.plugin_id for plugin in installed_plugins] continue
if firecrawl_plugin_id not in installed_plugins_ids: try:
if firecrawl_plugin_unique_identifier: # check firecrawl plugin is installed
# install firecrawl plugin installed_plugins = installer_manager.list_plugins(tenant_id)
PluginService.install_from_marketplace_pkg(tenant_id, [firecrawl_plugin_unique_identifier]) installed_plugins_ids = [plugin.plugin_id for plugin in installed_plugins]
if firecrawl_plugin_id not in installed_plugins_ids:
if firecrawl_plugin_unique_identifier:
# install firecrawl plugin
PluginService.install_from_marketplace_pkg(tenant_id, [firecrawl_plugin_unique_identifier])
auth_count = 0 auth_count = 0
for firecrawl_tenant_credential in firecrawl_tenant_credentials: for firecrawl_tenant_credential in firecrawl_tenant_credentials:
auth_count += 1 auth_count += 1
# get credential api key # get credential api key
credentials_json = json.loads(firecrawl_tenant_credential.credentials) credentials_json = json.loads(firecrawl_tenant_credential.credentials)
api_key = credentials_json.get("config", {}).get("api_key") api_key = credentials_json.get("config", {}).get("api_key")
base_url = credentials_json.get("config", {}).get("base_url") base_url = credentials_json.get("config", {}).get("base_url")
new_credentials = { new_credentials = {
"firecrawl_api_key": api_key, "firecrawl_api_key": api_key,
"base_url": base_url, "base_url": base_url,
} }
datasource_provider = DatasourceProvider( datasource_provider = DatasourceProvider(
provider="firecrawl", provider="firecrawl",
tenant_id=tenant_id, tenant_id=tenant_id,
plugin_id=firecrawl_plugin_id, plugin_id=firecrawl_plugin_id,
auth_type=api_key_credential_type.value, auth_type=api_key_credential_type.value,
encrypted_credentials=new_credentials, encrypted_credentials=new_credentials,
name=f"Auth {auth_count}", name=f"Auth {auth_count}",
avatar_url="default", avatar_url="default",
is_default=False, is_default=False,
)
db.session.add(datasource_provider)
deal_firecrawl_count += 1
except Exception as e:
click.echo(
click.style(
f"Error transforming firecrawl credentials: {str(e)}, tenant_id: {tenant_id}", fg="red"
)
) )
db.session.add(datasource_provider) continue
deal_firecrawl_count += 1
db.session.commit() db.session.commit()
# deal jina credentials # deal jina credentials
deal_jina_count = 0 deal_jina_count = 0
@@ -1538,36 +1560,45 @@ def transform_datasource_credentials():
jina_credentials_tenant_mapping[tenant_id] = [] jina_credentials_tenant_mapping[tenant_id] = []
jina_credentials_tenant_mapping[tenant_id].append(jina_credential) jina_credentials_tenant_mapping[tenant_id].append(jina_credential)
for tenant_id, jina_tenant_credentials in jina_credentials_tenant_mapping.items(): for tenant_id, jina_tenant_credentials in jina_credentials_tenant_mapping.items():
# check jina plugin is installed tenant = db.session.query(Tenant).filter_by(id=tenant_id).first()
installed_plugins = installer_manager.list_plugins(tenant_id) if not tenant:
installed_plugins_ids = [plugin.plugin_id for plugin in installed_plugins] continue
if jina_plugin_id not in installed_plugins_ids: try:
if jina_plugin_unique_identifier: # check jina plugin is installed
# install jina plugin installed_plugins = installer_manager.list_plugins(tenant_id)
logger.debug("Installing Jina plugin %s", jina_plugin_unique_identifier) installed_plugins_ids = [plugin.plugin_id for plugin in installed_plugins]
PluginService.install_from_marketplace_pkg(tenant_id, [jina_plugin_unique_identifier]) if jina_plugin_id not in installed_plugins_ids:
if jina_plugin_unique_identifier:
# install jina plugin
logger.debug("Installing Jina plugin %s", jina_plugin_unique_identifier)
PluginService.install_from_marketplace_pkg(tenant_id, [jina_plugin_unique_identifier])
auth_count = 0 auth_count = 0
for jina_tenant_credential in jina_tenant_credentials: for jina_tenant_credential in jina_tenant_credentials:
auth_count += 1 auth_count += 1
# get credential api key # get credential api key
credentials_json = json.loads(jina_tenant_credential.credentials) credentials_json = json.loads(jina_tenant_credential.credentials)
api_key = credentials_json.get("config", {}).get("api_key") api_key = credentials_json.get("config", {}).get("api_key")
new_credentials = { new_credentials = {
"integration_secret": api_key, "integration_secret": api_key,
} }
datasource_provider = DatasourceProvider( datasource_provider = DatasourceProvider(
provider="jina", provider="jina",
tenant_id=tenant_id, tenant_id=tenant_id,
plugin_id=jina_plugin_id, plugin_id=jina_plugin_id,
auth_type=api_key_credential_type.value, auth_type=api_key_credential_type.value,
encrypted_credentials=new_credentials, encrypted_credentials=new_credentials,
name=f"Auth {auth_count}", name=f"Auth {auth_count}",
avatar_url="default", avatar_url="default",
is_default=False, is_default=False,
)
db.session.add(datasource_provider)
deal_jina_count += 1
except Exception as e:
click.echo(
click.style(f"Error transforming jina credentials: {str(e)}, tenant_id: {tenant_id}", fg="red")
) )
db.session.add(datasource_provider) continue
deal_jina_count += 1
db.session.commit() db.session.commit()
except Exception as e: except Exception as e:
click.echo(click.style(f"Error parsing client params: {str(e)}", fg="red")) click.echo(click.style(f"Error parsing client params: {str(e)}", fg="red"))