diff options
author | Jenkins <jenkins@review.openstack.org> | 2015-06-24 16:49:23 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2015-06-24 16:49:23 +0000 |
commit | 77ed7d552eb94671d3f4094240bdd35b626b3e6f (patch) | |
tree | 1e7edfd5a38a071c92ca5115bd239983dc3e562a | |
parent | 28ec7b87072019bc9c9adeecdd1f7a3c16bacb99 (diff) | |
parent | 9c646eaf5a835f68247c64e6d1899912004a4dd7 (diff) | |
download | oslo-db-77ed7d552eb94671d3f4094240bdd35b626b3e6f.tar.gz |
Merge "Add a new ModelBase.items() method"
-rw-r--r-- | oslo_db/sqlalchemy/models.py | 12 | ||||
-rw-r--r-- | oslo_db/tests/sqlalchemy/test_models.py | 4 |
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): |