Commit 4090cf7c authored by Mickaël Desfrênes's avatar Mickaël Desfrênes
Browse files

manage IntegrityError in rpc.move_collection

parent c4b98f06
Loading
Loading
Loading
Loading
+3 −0
Changes for rpc/const.py: 3 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -51,3 +51,6 @@ CANT_CREATE_IMAGE = "Can't create image"
PROJECT_MISMATCH = "Can't mix items from different collections"
INVALID_PROPERTY_KEY = "invalid property key"
UNKNOWN_ERROR = "unknown error"
COLLECTION_ALREADY_EXIST_IN_PARENT = (
    "collection with same name already exists in parent collection"
)
+7 −0
Changes for rpc/methods.py: 7 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@ from resources.models import (
    APIKey,
    ProjectProperty,
)
from django.db.utils import IntegrityError
from django.contrib.auth.models import User
from django.db.models import QuerySet
from typing import List, Dict, Iterator, Union, Tuple
@@ -1945,8 +1946,11 @@ def move_collection(
        user, child_collection_instance.project, PERM_COLLECTION_UPDATE
    )
    child_collection_instance.parent = parent_collection_instance
    try:
        child_collection_instance.save()
        return True
    except IntegrityError:
        raise ServiceException(COLLECTION_ALREADY_EXIST_IN_PARENT)


@_log_call
@@ -2448,9 +2452,12 @@ def move_items(
    """
    results = {"collections": {}, "resources": {}}
    for collection_id in collections_ids:
        try:
            results["collections"][collection_id] = move_collection(
                user, collection_id, to_collection_id
            )
        except ServiceException:
            results["collections"][collection_id] = False
    for resource_id in resources_ids:
        add_ok = add_resource_to_collection(user, resource_id, to_collection_id)
        if add_ok: