删除冗余的函数
This commit is contained in:
parent
cba916ae28
commit
42834c913a
@ -1,5 +1,5 @@
|
||||
"""
|
||||
Jingrow Local 应用安装器
|
||||
Jingrow 应用安装器
|
||||
"""
|
||||
|
||||
import os
|
||||
@ -366,119 +366,6 @@ def install_app(uploaded_file_path: str, app_name: str = None) -> Dict[str, Any]
|
||||
return {'success': False, 'error': str(e)}
|
||||
|
||||
|
||||
def install_extension_package(package_path: str) -> Dict[str, Any]:
|
||||
"""
|
||||
直接安装扩展包到数据库(不走文件系统复制)
|
||||
|
||||
Args:
|
||||
package_path: 扩展包文件路径(tar.gz)
|
||||
|
||||
Returns:
|
||||
Dict: 安装结果
|
||||
"""
|
||||
try:
|
||||
|
||||
# 验证文件
|
||||
if not os.path.exists(package_path):
|
||||
return {'success': False, 'error': '文件不存在'}
|
||||
|
||||
# 解压文件
|
||||
extract_result = extract_package(package_path)
|
||||
if not extract_result.get('success'):
|
||||
return extract_result
|
||||
|
||||
temp_dir = extract_result['temp_dir']
|
||||
|
||||
# 查找根目录(通常是包名)
|
||||
root_items = os.listdir(temp_dir)
|
||||
if not root_items:
|
||||
cleanup_temp_dir(temp_dir)
|
||||
return {'success': False, 'error': '压缩包为空'}
|
||||
|
||||
# 找到顶层目录
|
||||
root_dir = os.path.join(temp_dir, root_items[0]) if len(root_items) == 1 and os.path.isdir(os.path.join(temp_dir, root_items[0])) else temp_dir
|
||||
package_name = os.path.basename(root_dir)
|
||||
|
||||
# 查找 package.json 文件
|
||||
package_json_path = os.path.join(root_dir, f"{package_name}.json")
|
||||
if not os.path.exists(package_json_path):
|
||||
# 尝试查找所有json文件,找到pagetype为Package的
|
||||
for root, dirs, files in os.walk(root_dir):
|
||||
for file in files:
|
||||
if file.endswith('.json'):
|
||||
try:
|
||||
with open(os.path.join(root, file), 'r') as f:
|
||||
data = json.load(f)
|
||||
if data.get('pagetype') == 'Package':
|
||||
package_json_path = os.path.join(root, file)
|
||||
break
|
||||
except:
|
||||
pass
|
||||
if os.path.exists(package_json_path):
|
||||
break
|
||||
|
||||
if not os.path.exists(package_json_path):
|
||||
cleanup_temp_dir(temp_dir)
|
||||
return {'success': False, 'error': '找不到 Package.json 文件'}
|
||||
|
||||
# 导入 Package
|
||||
try:
|
||||
import jingrow
|
||||
from jingrow.modules.import_file import import_pg, import_file_by_path
|
||||
from jingrow.model.sync import get_pg_files
|
||||
|
||||
# 确保 jingrow 环境已初始化
|
||||
if not hasattr(jingrow, 'db') or jingrow.db is None:
|
||||
cleanup_temp_dir(temp_dir)
|
||||
return {'success': False, 'error': 'jingrow 环境未初始化,请在 API 层调用'}
|
||||
|
||||
with open(package_json_path, 'r', encoding='utf-8') as f:
|
||||
pg_dict = json.load(f)
|
||||
|
||||
# 验证 Package 数据
|
||||
if not pg_dict.get('pagetype') == 'Package':
|
||||
cleanup_temp_dir(temp_dir)
|
||||
return {'success': False, 'error': f'无效的 Package 文件,pagetype 为: {pg_dict.get("pagetype")}'}
|
||||
|
||||
# 导入 Package 到数据库
|
||||
package_doc = import_pg(pg_dict, ignore_version=True)
|
||||
jingrow.flags.package = package_doc
|
||||
|
||||
# 收集所有 pagetype 文件
|
||||
files = []
|
||||
for module in os.listdir(root_dir):
|
||||
module_path = os.path.join(root_dir, module)
|
||||
if os.path.isdir(module_path):
|
||||
files = get_pg_files(files, module_path)
|
||||
|
||||
|
||||
# 导入所有文件
|
||||
imported_files = []
|
||||
for file in files:
|
||||
try:
|
||||
import_file_by_path(file, force=True, ignore_version=True)
|
||||
imported_files.append(file)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# 清理临时文件
|
||||
cleanup_temp_dir(temp_dir)
|
||||
return {
|
||||
'success': True,
|
||||
'message': f'扩展包 {package_name} 安装成功',
|
||||
'package_name': package_name,
|
||||
'imported_files': imported_files,
|
||||
'file_count': len(imported_files)
|
||||
}
|
||||
|
||||
except Exception as e:
|
||||
cleanup_temp_dir(temp_dir)
|
||||
return {'success': False, 'error': str(e)}
|
||||
|
||||
except Exception as e:
|
||||
return {'success': False, 'error': str(e)}
|
||||
|
||||
|
||||
@handle_errors
|
||||
def install_package(temp_dir: str, package_info: Dict[str, Any]) -> Dict[str, Any]:
|
||||
"""将扩展包安装到 jingrow 应用内部并同步到数据库"""
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user