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

full collection restore

parent 5442ee29
Loading
Loading
Loading
Loading
+15 −2
Original line number Diff line number Diff line
@@ -2689,8 +2689,21 @@ def restore_collection(
    if destination_collection_instance.project_id != collection_instance.project_id:
        raise ServiceException(PROJECT_MISMATCH)
    _check_project_permission(user, collection_instance.project, PERM_COLLECTION_UPDATE)
    collection_instance.deleted_at = None
    collection_instance.save()

    def _restore(col_instance: Collection):
        col_instance.deleted_at = None
        col_instance.save()
        for resource_instance in col_instance.resource_set.filter(
            deleted_at__isnull=False
        ):
            # restore_resource(user, resource_instance.pk, col_instance.pk)
            resource_instance.deleted_at = None
            resource_instance.save()
        for child_collection_instance in Collection.objects.filter(parent=col_instance):
            _restore(child_collection_instance)

    # recurse collection, respawn all descendants
    _restore(collection_instance)
    move_collection(user, collection_instance.pk, destination_collection_instance.pk)
    return True