Merge "Allow to delete multiple objects with advanced filters"

This commit is contained in:
Zuul 2019-07-29 15:15:15 +00:00 committed by Gerrit Code Review
commit 547ec37e51
2 changed files with 23 additions and 1 deletions

View File

@ -259,7 +259,9 @@ def _delete_all(model, **kwargs):
# NOTE(kong): Because we use 'in_' operator in _secure_query(), delete()
# method will raise error with default parameter. Please refer to
# http://docs.sqlalchemy.org/en/rel_1_0/orm/query.html#sqlalchemy.orm.query.Query.delete
_secure_query(model).filter_by(**kwargs).delete(synchronize_session=False)
query = _secure_query(model)
query = db_filters.apply_filters(query, model, **kwargs)
query.delete(synchronize_session=False)
def _get_collection(model, insecure=False, limit=None, marker=None,

View File

@ -2778,6 +2778,26 @@ class EnvironmentTest(SQLAlchemyTest):
created.name
)
def test_delete_environments(self):
created0 = db_api.create_environment(ENVIRONMENTS[0])
created1 = db_api.create_environment(ENVIRONMENTS[1])
db_api.delete_environments(
name={'in': [created0.name, created1.name]}
)
self.assertRaises(
exc.DBEntityNotFoundError,
db_api.get_environment,
created0.id
)
self.assertRaises(
exc.DBEntityNotFoundError,
db_api.get_environment,
created1.id
)
def test_environment_repr(self):
s = db_api.create_environment(ENVIRONMENTS[0]).__repr__()