diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 30105e39..f32700c1 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -24,6 +24,11 @@ This document describes changes between each past release. - Follow redirections in batch subrequests (fixes #511) - Add a ``readonly`` setting to run the service in read-only mode. (#525) +**Bug fixes** + +- Fix PostgreSQL error when deleting an empty collection in a protected + resource (fixes #528) + **Internal changes** - Switch to SQLAlchemy for smarter connections pools. diff --git a/cliquet/permission/postgresql/__init__.py b/cliquet/permission/postgresql/__init__.py index 207ec919..eb75f3ad 100644 --- a/cliquet/permission/postgresql/__init__.py +++ b/cliquet/permission/postgresql/__init__.py @@ -308,6 +308,9 @@ def replace_object_permissions(self, object_id, permissions): conn.execute(insert_query, placeholders) def delete_object_permissions(self, *object_id_list): + if len(object_id_list) == 0: + return + query = """ DELETE FROM access_control_entries WHERE object_id IN %(object_id_list)s;""" diff --git a/cliquet/tests/test_permission.py b/cliquet/tests/test_permission.py index afb7c2fa..efc29976 100644 --- a/cliquet/tests/test_permission.py +++ b/cliquet/tests/test_permission.py @@ -405,6 +405,9 @@ def test_delete_object_permissions_remove_all_given_objects_acls(self): self.assertDictEqual(self.permission.object_permissions( '/url/a/id/3'), {"create": {"user4"}}) + def test_delete_object_permissions_supports_empty_list(self): + self.permission.delete_object_permissions() # Not failing + class MemoryPermissionTest(BaseTestPermission, unittest.TestCase): backend = memory_backend