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

fix delete_collection

parent 884fd3db
Loading
Loading
Loading
Loading
+23 −4
Original line number Diff line number Diff line
@@ -579,17 +579,27 @@ def delete_collection(user: User, collection_id: int, recursive: bool = False) -
    if recursive:
        if has_permission(user, collection_instance.project, PERM_RESOURCE_DELETE):
            for resource_instance in collection_instance.resources.all():
                if resource_instance.collections.all().count() < 2:
                # is it in another collection ?
                if (
                    resource_instance.collections.filter(
                        deleted_at__isnull=True
                    ).count()
                    < 2
                ):
                    resource_instance.soft_delete()
            for resource_instance in collection_instance.descendants_resources():
                if resource_instance.collections.all().count() < 2:
                # is it in another collection ?
                if (
                    resource_instance.collections.filter(
                        deleted_at__isnull=True
                    ).count()
                    < 2
                ):
                    resource_instance.soft_delete()
        for descendant_collection_instance in collection_instance.descendants():
            descendant_collection_instance.soft_delete()

    # do not allow to delete collection with content
    if collection_instance.resources.filter(deleted_at__isnull=True).count() > 0:
        return {"success": False, "status": "collection has resources"}
    if len(collection_instance.children()) > 0:
        return {"success": False, "status": "collection has descendants"}
    collection_instance.soft_delete()
@@ -2272,6 +2282,7 @@ def recycle_bin(user: User, project_id: int) -> List[Dict]:
    - object type
    - label
    - id
    - deleted_at
    """
    _check_project_permission(user, project_id, PERM_COLLECTION_READ)
    _check_project_permission(user, project_id, PERM_RESOURCE_READ)
@@ -2299,3 +2310,11 @@ def recycle_bin(user: User, project_id: int) -> List[Dict]:
            }
        )
    return results


def restore_resource(user: User, resource_id: int) -> bool:
    pass


def restore_collection(user: User, collection_id: int) -> bool:
    pass