Author: novalis
Date: 2007-01-10 14:26:59 -0700 (Wed, 10 Jan 2007)
New Revision: 2199
Modified:
SQLObject/trunk/sqlobject/versioning/__init__.py
SQLObject/trunk/sqlobject/versioning/test/test_version.py
Log:
versions can now have extra columns
Modified: SQLObject/trunk/sqlobject/versioning/__init__.py
===================================================================
--- SQLObject/trunk/sqlobject/versioning/__init__.py 2007-01-10 16:59:13 UTC (rev 2198)
+++ SQLObject/trunk/sqlobject/versioning/__init__.py 2007-01-10 21:26:59 UTC (rev 2199)
@@ -45,7 +45,11 @@
class Versioning(object):
- def __init__(self):
+ def __init__(self, extraCols = None):
+ if extraCols:
+ self.extraCols = extraCols
+ else:
+ self.extraCols = {}
pass
def __addtoclass__(self, soClass, name):
@@ -59,6 +63,8 @@
getColumns (attrs, self.soClass)
+ attrs.update(self.extraCols)
+
self.versionClass = type(self.soClass.__name__+'Versions',
(Version,),
attrs)
Modified: SQLObject/trunk/sqlobject/versioning/test/test_version.py
===================================================================
--- SQLObject/trunk/sqlobject/versioning/test/test_version.py 2007-01-10 16:59:13 UTC (rev 2198)
+++ SQLObject/trunk/sqlobject/versioning/test/test_version.py 2007-01-10 21:26:59 UTC (rev 2199)
@@ -39,8 +39,17 @@
foreign = ForeignKey("Base")
versions = Versioning()
+<<<<<<< .mine
+def _set_extra():
+ return "read all about it"
+
+class Extra(SQLObject):
+ name = StringCol()
+ versions = Versioning(extraCols={'extra' : StringCol(default=_set_extra())})
+
+
def setup():
- for cls in [MyClass, Base, Child, Government, Monarchy, VChild, HasForeign]:
+ for cls in [MyClass, Base, Child, Government, Monarchy, VChild, HasForeign, Extra]:
if hasattr(cls, 'versions') and hasattr(cls, "_connection") and \
cls._connection.tableExists(cls.sqlmeta.table):
setupClass(cls.versions.versionClass)
@@ -132,3 +141,9 @@
has_foreign = HasForeign(foreign = base1)
has_foreign.foreign = base2
assert has_foreign.versions[0].foreign == base1
+
+def test_extra():
+ setup()
+ extra = Extra(name='title')
+ extra.name = 'new'
+ assert extra.versions[0].extra == 'read all about it'
|