增加get_package_dependencies函数
This commit is contained in:
parent
31824cfbea
commit
022ec0d016
@ -136,7 +136,7 @@ const showResources = async () => {
|
||||
try {
|
||||
const packageName = props.context.record.name
|
||||
|
||||
const response = await axios.post('/api/action/jingrow.core.pagetype.package.package.get_package_dependencies', {
|
||||
const response = await axios.post('/jingrow/get-package-dependencies', {
|
||||
package_name: packageName
|
||||
}, {
|
||||
headers: get_session_api_headers()
|
||||
|
||||
@ -2,6 +2,7 @@ from fastapi import APIRouter, HTTPException
|
||||
from typing import Dict, Any
|
||||
from pathlib import Path
|
||||
import re
|
||||
from jingrow.utils.jingrow_api import get_package_dependencies
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@ -281,3 +282,36 @@ dev = [
|
||||
raise HTTPException(status_code=400, detail=str(e))
|
||||
|
||||
|
||||
@router.post("/jingrow/get-package-dependencies")
|
||||
async def get_package_dependencies_api(payload: Dict[str, Any]):
|
||||
"""获取Package的依赖信息"""
|
||||
try:
|
||||
package_name = payload.get("package_name")
|
||||
if not package_name:
|
||||
raise ValueError("package_name is required")
|
||||
|
||||
# 调用 jingrow_api.get_package_dependencies
|
||||
result = get_package_dependencies(package_name)
|
||||
|
||||
# 转换返回格式以匹配前端期望的格式
|
||||
if result.get('success'):
|
||||
return {
|
||||
"message": {
|
||||
"status": "success",
|
||||
"package_name": result.get('package_name'),
|
||||
"modules": result.get('modules', []),
|
||||
"pagetypes": result.get('pagetypes', []),
|
||||
"releases": result.get('releases', []),
|
||||
"summary": result.get('summary', {})
|
||||
}
|
||||
}
|
||||
else:
|
||||
return {
|
||||
"message": {
|
||||
"status": "error",
|
||||
"message": result.get('error', '获取Package依赖信息失败')
|
||||
}
|
||||
}
|
||||
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=500, detail=str(e))
|
||||
@ -479,6 +479,39 @@ def get_pagetype_module_app(pagetype: str):
|
||||
except Exception as e:
|
||||
return {'success': False, 'error': f"获取模块信息异常: {str(e)}"}
|
||||
|
||||
def get_package_dependencies(package_name: str):
|
||||
"""
|
||||
获取指定Package的依赖信息(模块、PageType、Release等)。
|
||||
"""
|
||||
try:
|
||||
api_url = f"{Config.jingrow_server_url}/api/action/jingrow.core.pagetype.package.package.get_package_dependencies"
|
||||
headers = get_jingrow_api_headers()
|
||||
if not headers:
|
||||
return {'success': False, 'error': 'JINGROW_API_KEY 或 JINGROW_API_SECRET 未配置'}
|
||||
payload = {"package_name": package_name}
|
||||
response = requests.post(api_url, json=payload, headers=headers, timeout=30)
|
||||
if response.status_code == 200:
|
||||
data = response.json()
|
||||
# 处理服务端 action 的包裹格式
|
||||
if isinstance(data, dict) and 'message' in data:
|
||||
data = data['message']
|
||||
# 检查返回格式
|
||||
if isinstance(data, dict) and data.get('status') == 'success':
|
||||
return {
|
||||
'success': True,
|
||||
'package_name': data.get('package_name'),
|
||||
'modules': data.get('modules', []),
|
||||
'pagetypes': data.get('pagetypes', []),
|
||||
'releases': data.get('releases', []),
|
||||
'summary': data.get('summary', {})
|
||||
}
|
||||
elif isinstance(data, dict) and data.get('status') == 'error':
|
||||
return {'success': False, 'error': data.get('message', '获取Package依赖信息失败')}
|
||||
return {'success': False, 'error': 'API响应格式错误'}
|
||||
return {'success': False, 'error': f"HTTP {response.status_code}: {response.text}"}
|
||||
except Exception as e:
|
||||
return {'success': False, 'error': f"获取Package依赖信息异常: {str(e)}"}
|
||||
|
||||
def get_record_id(pagetype: str, filters: list = None, field: str = None, value: str = None, site: str = None):
|
||||
"""
|
||||
按条件获取单条记录的 name 值。
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user