Author: novalis
Date: 2007-09-10 14:58:57 -0600 (Mon, 10 Sep 2007)
New Revision: 2909
Modified:
SQLObject/trunk/sqlobject/versioning/__init__.py
SQLObject/trunk/sqlobject/versioning/test/test_version.py
Log:
versioning now works with constraints like unique
Modified: SQLObject/trunk/sqlobject/versioning/__init__.py
===================================================================
--- SQLObject/trunk/sqlobject/versioning/__init__.py 2007-09-10 17:38:23 UTC (rev 2908)
+++ SQLObject/trunk/sqlobject/versioning/__init__.py 2007-09-10 20:58:57 UTC (rev 2909)
@@ -45,8 +45,13 @@
for column, defi in cls.sqlmeta.columnDefinitions.items():
if column.endswith("ID") and isinstance(defi, ForeignKey):
column = column[:-2]
- columns[column] = defi.__class__(**defi._kw)
+ #remove incompatible constraints
+ kwds = dict(defi._kw)
+ for kw in ["alternateID", "unique"]:
+ if kw in kwds: del kwds[kw]
+ columns[column] = defi.__class__(**kwds)
+
#ascend heirarchy
if cls.sqlmeta.parentClass:
getColumns(columns, cls.sqlmeta.parentClass)
Modified: SQLObject/trunk/sqlobject/versioning/test/test_version.py
===================================================================
--- SQLObject/trunk/sqlobject/versioning/test/test_version.py 2007-09-10 17:38:23 UTC (rev 2908)
+++ SQLObject/trunk/sqlobject/versioning/test/test_version.py 2007-09-10 20:58:57 UTC (rev 2909)
@@ -43,10 +43,14 @@
class Extra(SQLObject):
name = StringCol()
versions = Versioning(extraCols={'extra' : StringCol(default=_set_extra())})
+class HasAltId(SQLObject):
+ name = StringCol()
+ altid = IntCol(alternateID=True)
+ versions = Versioning()
def setup():
- classes = [MyClass, Base, Child, Government, Monarchy, VChild, Extra]
+ classes = [MyClass, Base, Child, Government, Monarchy, VChild, Extra, HasAltId]
if hasattr(HasForeign, "_connection"):
classes.insert(0, HasForeign)
else:
@@ -157,3 +161,9 @@
extra.name = 'new'
assert extra.versions[0].extra == 'read all about it'
assert sorted(extra.versions[0].getChangedFields()) == ['Name']
+
+def test_altid():
+ setup()
+ extra = HasAltId(name="fleem", altid=5)
+ extra.name = "morx"
+
|