@@ -844,6 +844,16 @@ def _handle_update(
844844 and original_parent_resource is not None
845845 ):
846846 self .transfer_to_new_resource (original_instance , tree , additional_add_params )
847+ else :
848+ # 判断是否变更了resource_site
849+ target_site = original_instance .unilabos_extra .get ("update_resource_site" )
850+ sites = original_instance .parent .sites if original_instance .parent is not None and hasattr (original_instance .parent , "sites" ) else None
851+ site_names = list (original_instance .parent ._ordering .keys ()) if original_instance .parent is not None and hasattr (original_instance .parent , "sites" ) else []
852+ if target_site is not None and sites is not None and site_names is not None :
853+ site_index = sites .index (original_instance )
854+ site_name = site_names [site_index ]
855+ if site_name != target_site :
856+ self .transfer_to_new_resource (original_instance , tree , additional_add_params )
847857
848858 # 加载状态
849859 original_instance .load_all_state (states )
@@ -898,7 +908,14 @@ def _handle_update(
898908 plr_resources .append (tree .root_node )
899909 else :
900910 plr_resources .append (ResourceTreeSet ([tree ]).to_plr_resources ()[0 ])
911+ new_tree_set = ResourceTreeSet .from_plr_resources (plr_resources )
901912 result = _handle_update (plr_resources , tree_set , additional_add_params )
913+ r = SerialCommand .Request ()
914+ r .command = json .dumps (
915+ {"data" : {"data" : new_tree_set .dump ()}, "action" : "update" }) # 和Update Resource一致
916+ response : SerialCommand_Response = await self ._resource_clients [
917+ "c2s_update_resource_tree" ].call_async (r ) # type: ignore
918+ self .lab_logger ().info (f"确认资源云端 Update 结果: { response .response } " )
902919 results .append (result )
903920 elif action == "remove" :
904921 result = _handle_remove (resources_uuid )
0 commit comments