feat: get_project_dir_pl产线隔离版——跨产线项目视为无项目(商机空间不显示开发项目)
This commit is contained in:
parent
eaebca297d
commit
31eff0757e
@ -275,6 +275,31 @@ async def get_project_dir(sor, uid, session_id=''):
|
||||
return os.path.join(space_dir, 'projects', dname), workspace_base
|
||||
|
||||
|
||||
async def get_project_dir_pl(sor, uid, session_id='', pipeline_id=''):
|
||||
"""产线隔离版:会话项目与指定产线不一致时视为无项目(返回空目录)。
|
||||
|
||||
商机/投标产线入口的工作空间不能显示开发产线项目的空间——
|
||||
会话里残留的跨产线项目(如元景项目)不应劫持本产线的工作空间。
|
||||
pipeline_id 为空时不做隔离(向后兼容旧调用)。
|
||||
"""
|
||||
if not pipeline_id:
|
||||
return await get_project_dir(sor, uid, session_id)
|
||||
pid = await get_session_project_id(sor, uid, session_id)
|
||||
if pid:
|
||||
try:
|
||||
r = await sor.sqlExe(
|
||||
"SELECT pipeline_id FROM sd_projects WHERE id=${p}$ LIMIT 1",
|
||||
{"p": pid})
|
||||
if r:
|
||||
proj_pl = getattr(r[0], 'pipeline_id', '') or ''
|
||||
if proj_pl != pipeline_id:
|
||||
# 跨产线项目:视为本产线无项目(与 gateway 的隔离一致)
|
||||
return '', await get_workspace_base(sor)
|
||||
except Exception:
|
||||
pass
|
||||
return await get_project_dir(sor, uid, session_id)
|
||||
|
||||
|
||||
async def get_project_apps_modules(sor, uid, session_id=''):
|
||||
"""读项目目录下 {应用名}_spec.json,返回 (apps, modules)。
|
||||
|
||||
@ -488,6 +513,7 @@ def load_workspace():
|
||||
g.get_workspace_path = get_workspace_path
|
||||
g.get_space_dir = get_space_dir
|
||||
g.get_project_dir = get_project_dir
|
||||
g.get_project_dir_pl = get_project_dir_pl
|
||||
g.get_project_apps_modules = get_project_apps_modules
|
||||
g.get_session_project_id = get_session_project_id
|
||||
g.get_session_context = get_session_context
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user