Loading rpc/methods.py +23 −4 Original line number Diff line number Diff line Loading @@ -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() Loading Loading @@ -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) Loading Loading @@ -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 Loading
rpc/methods.py +23 −4 Original line number Diff line number Diff line Loading @@ -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() Loading Loading @@ -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) Loading Loading @@ -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