summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2015-06-24 16:49:23 +0000
committerGerrit Code Review <review@openstack.org>2015-06-24 16:49:23 +0000
commit77ed7d552eb94671d3f4094240bdd35b626b3e6f (patch)
tree1e7edfd5a38a071c92ca5115bd239983dc3e562a
parent28ec7b87072019bc9c9adeecdd1f7a3c16bacb99 (diff)
parent9c646eaf5a835f68247c64e6d1899912004a4dd7 (diff)
downloadoslo-db-77ed7d552eb94671d3f4094240bdd35b626b3e6f.tar.gz
Merge "Add a new ModelBase.items() method"
-rw-r--r--oslo_db/sqlalchemy/models.py12
-rw-r--r--oslo_db/tests/sqlalchemy/test_models.py4
2 files changed, 13 insertions, 3 deletions
diff --git a/oslo_db/sqlalchemy/models.py b/oslo_db/sqlalchemy/models.py
index 8edfe72..4293c9d 100644
--- a/oslo_db/sqlalchemy/models.py
+++ b/oslo_db/sqlalchemy/models.py
@@ -85,7 +85,7 @@ class ModelBase(six.Iterator):
for k, v in six.iteritems(values):
setattr(self, k, v)
- def iteritems(self):
+ def _as_dict(self):
"""Make the model object behave like a dict.
Includes attributes from joins.
@@ -94,7 +94,15 @@ class ModelBase(six.Iterator):
joined = dict([(k, v) for k, v in six.iteritems(self.__dict__)
if not k[0] == '_'])
local.update(joined)
- return six.iteritems(local)
+ return local
+
+ def iteritems(self):
+ """Make the model object behave like a dict."""
+ return six.iteritems(self._as_dict())
+
+ def items(self):
+ """Make the model object behave like a dict."""
+ return self._as_dict().items()
def keys(self):
"""Make the model object behave like a dict."""
diff --git a/oslo_db/tests/sqlalchemy/test_models.py b/oslo_db/tests/sqlalchemy/test_models.py
index eac66f5..525573a 100644
--- a/oslo_db/tests/sqlalchemy/test_models.py
+++ b/oslo_db/tests/sqlalchemy/test_models.py
@@ -40,6 +40,7 @@ class ModelBaseTest(test_base.DbTestCase):
'get',
'update',
'save',
+ 'items',
'iteritems',
'keys')
for method in dict_methods:
@@ -69,7 +70,7 @@ class ModelBaseTest(test_base.DbTestCase):
self.assertFalse('non-existent-key' in mb)
- def test_modelbase_iteritems(self):
+ def test_modelbase_items_iteritems(self):
h = {'a': '1', 'b': '2'}
expected = {
'id': None,
@@ -79,6 +80,7 @@ class ModelBaseTest(test_base.DbTestCase):
'b': '2',
}
self.ekm.update(h)
+ self.assertEqual(dict(self.ekm.items()), expected)
self.assertEqual(dict(self.ekm.iteritems()), expected)
def test_modelbase_dict(self):