From e83e12b51a41ed46bbc77d9ca4c8512b92039669 Mon Sep 17 00:00:00 2001 From: grossmj Date: Sun, 17 Nov 2024 14:03:47 +1000 Subject: [PATCH] Add a duplicated project in the same resource pools as the original project if it is in any --- gns3server/api/routes/controller/projects.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/gns3server/api/routes/controller/projects.py b/gns3server/api/routes/controller/projects.py index fa088534..235511e1 100644 --- a/gns3server/api/routes/controller/projects.py +++ b/gns3server/api/routes/controller/projects.py @@ -430,7 +430,8 @@ async def import_project( ) async def duplicate_project( project_data: schemas.ProjectDuplicate, - project: Project = Depends(dep_project) + project: Project = Depends(dep_project), + pools_repo: ResourcePoolsRepository = Depends(get_repository(ResourcePoolsRepository)) ) -> schemas.Project: """ Duplicate a project. @@ -442,6 +443,15 @@ async def duplicate_project( new_project = await project.duplicate( name=project_data.name, reset_mac_addresses=reset_mac_addresses ) + + # Add the new project in the same resource pools if the duplicated project is in any + pool_memberships = await pools_repo.get_resource_memberships(project.id) + if pool_memberships: + resource_create = schemas.ResourceCreate(resource_id=new_project.id, resource_type="project", name=new_project.name) + resource = await pools_repo.create_resource(resource_create) + for pool in pool_memberships: + await pools_repo.add_resource_to_pool(pool.resource_pool_id, resource) + return new_project.asdict()