Merge pull request #3018 from aastefanov/3.1

Change project creator on import
This commit is contained in:
Jeremy Grossmann 2026-10-21 04:44:35 +02:00 committed by GitHub
commit c1fdd55cb3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 18 additions and 2 deletions

View File

@ -806,7 +806,12 @@ async def export_project(
openapi_extra=binary_request_body(ZIP_MEDIA_TYPE),
dependencies=[Depends(has_privilege("Project.Allocate"))],
)
async def import_project(project_id: UUID, request: Request, name: Optional[str] = None) -> schemas.Project:
async def import_project(
project_id: UUID,
request: Request,
name: Optional[str] = None,
current_user: schemas.User = Depends(get_current_active_user),
) -> schemas.Project:
"""
Import a project from a portable archive.
@ -825,7 +830,13 @@ async def import_project(project_id: UUID, request: Request, name: Optional[str]
async for chunk in request.stream():
await f.write(chunk)
with open(temp_project_path, "rb") as f:
project = await import_controller_project(controller, str(project_id), f, name=name)
project = await import_controller_project(
controller,
str(project_id),
f,
name=name,
user=current_user.username,
)
log.info(f"Project '{project.name}' imported in {time.time() - begin:.4f} seconds")
except OSError as e:

View File

@ -51,6 +51,7 @@ async def import_project(
auto_start=False,
auto_open=False,
auto_close=True,
user=None,
):
"""
Import a project contain in a zip file
@ -65,6 +66,7 @@ async def import_project(
:param reset_mac_addresses: Reset MAC addresses for each node
:param keep_compute_ids: keep compute IDs unchanged
:param project_name: Original project name when restoring a snapshot
:param user: User importing the project
:returns: Project
"""
@ -120,6 +122,9 @@ async def import_project(
topology["auto_open"] = auto_open
topology["auto_close"] = auto_close
if user:
topology["created_by"] = user
if not restoring_snapshot:
# Do not re-generate IDs if we are restoring a snapshot because they should be the same in a project
regenerate_topology_ids(topology, path, reset_mac_addresses=reset_mac_addresses)