Removes created_at, updated_at from ModelBase

Created a 'TimestampMixin' class.
Next step is to update Nova which is the only project using oslo.db

Fixes bug #1119702

Change-Id: I1ffcc09a2971e6e6102da7ecb855a2837a159baf
This commit is contained in:
Zhongyue Luo
2013-04-10 10:31:03 +08:00
parent 8ad86dfb09
commit ee71fe84c0
2 changed files with 27 additions and 2 deletions

View File

@@ -33,8 +33,6 @@ from openstack.common import timeutils
class ModelBase(object):
"""Base class for models."""
__table_initialized__ = False
created_at = Column(DateTime, default=timeutils.utcnow)
updated_at = Column(DateTime, onupdate=timeutils.utcnow)
metadata = None
def save(self, session=None):
@@ -92,6 +90,11 @@ class ModelBase(object):
return local.iteritems()
class TimestampMixin(object):
created_at = Column(DateTime, default=timeutils.utcnow)
updated_at = Column(DateTime, onupdate=timeutils.utcnow)
class SoftDeleteMixin(object):
deleted_at = Column(DateTime)
deleted = Column(Integer, default=0)

View File

@@ -28,6 +28,7 @@ class ModelBaseTest(test_utils.BaseTestCase):
'get',
'next',
'update',
'save',
'iteritems')
for method in dict_methods:
self.assertTrue(hasattr(models.ModelBase, method))
@@ -70,3 +71,24 @@ class ModelBaseTest(test_utils.BaseTestCase):
found_items += 1
self.assertEqual(min_items, found_items)
class TimestampMixinTest(test_utils.BaseTestCase):
def test_timestampmixin_attr(self):
class TestModel(models.ModelBase, models.TimestampMixin):
pass
dict_methods = ('__getitem__',
'__setitem__',
'__iter__',
'get',
'next',
'update',
'save',
'iteritems',
'created_at',
'updated_at')
for method in dict_methods:
self.assertTrue(hasattr(TestModel, method))