修复:统一发货路由错误隐藏
This commit is contained in:
@@ -663,16 +663,15 @@ class ShipmentService:
|
||||
hidden_site_ids: set[int],
|
||||
require_active: bool,
|
||||
) -> None:
|
||||
warehouses: dict[int, Any] = {}
|
||||
warehouse_permission_errors: dict[int, PermissionException] = {}
|
||||
for warehouse_id in sorted(warehouse_ids):
|
||||
warehouse = await MasterDao.get_warehouse(
|
||||
query_db,
|
||||
warehouse_id,
|
||||
for_update=True,
|
||||
)
|
||||
if warehouse is None:
|
||||
raise ServiceException(message='来源仓库不存在')
|
||||
if require_active and warehouse.status != '0':
|
||||
raise ServiceException(message='来源仓库已停用')
|
||||
warehouses[warehouse_id] = warehouse
|
||||
try:
|
||||
await AccessService.assert_warehouse_access(
|
||||
query_db,
|
||||
@@ -680,21 +679,18 @@ class ShipmentService:
|
||||
warehouse_id,
|
||||
for_update=True,
|
||||
)
|
||||
except PermissionException:
|
||||
if warehouse_id in hidden_warehouse_ids:
|
||||
cls._raise_shipment_not_accessible(current_user)
|
||||
raise
|
||||
except PermissionException as exc:
|
||||
warehouse_permission_errors[warehouse_id] = exc
|
||||
|
||||
sites: dict[int, Any] = {}
|
||||
site_permission_errors: dict[int, PermissionException] = {}
|
||||
for site_id in sorted(site_ids):
|
||||
site = await MasterDao.get_site(
|
||||
query_db,
|
||||
site_id,
|
||||
for_update=True,
|
||||
)
|
||||
if site is None:
|
||||
raise ServiceException(message='目标现场不存在')
|
||||
if require_active and site.status != '0':
|
||||
raise ServiceException(message='目标现场已停用')
|
||||
sites[site_id] = site
|
||||
try:
|
||||
await AccessService.assert_site_access(
|
||||
query_db,
|
||||
@@ -702,10 +698,33 @@ class ShipmentService:
|
||||
site_id,
|
||||
for_update=True,
|
||||
)
|
||||
except PermissionException:
|
||||
if site_id in hidden_site_ids:
|
||||
cls._raise_shipment_not_accessible(current_user)
|
||||
raise
|
||||
except PermissionException as exc:
|
||||
site_permission_errors[site_id] = exc
|
||||
|
||||
if hidden_warehouse_ids & warehouse_permission_errors.keys() or (
|
||||
hidden_site_ids & site_permission_errors.keys()
|
||||
):
|
||||
cls._raise_shipment_not_accessible(current_user)
|
||||
|
||||
explicit_permission_errors = [
|
||||
warehouse_permission_errors[warehouse_id] for warehouse_id in sorted(warehouse_permission_errors)
|
||||
]
|
||||
explicit_permission_errors.extend(site_permission_errors[site_id] for site_id in sorted(site_permission_errors))
|
||||
if explicit_permission_errors:
|
||||
raise explicit_permission_errors[0]
|
||||
|
||||
for warehouse_id in sorted(warehouses):
|
||||
warehouse = warehouses[warehouse_id]
|
||||
if warehouse is None:
|
||||
raise ServiceException(message='来源仓库不存在')
|
||||
if require_active and warehouse.status != '0':
|
||||
raise ServiceException(message='来源仓库已停用')
|
||||
for site_id in sorted(sites):
|
||||
site = sites[site_id]
|
||||
if site is None:
|
||||
raise ServiceException(message='目标现场不存在')
|
||||
if require_active and site.status != '0':
|
||||
raise ServiceException(message='目标现场已停用')
|
||||
|
||||
@classmethod
|
||||
async def _lock_and_reauthorize_route(
|
||||
|
||||
Reference in New Issue
Block a user