Author: phd
Date: 2007-09-14 08:43:59 -0600 (Fri, 14 Sep 2007)
New Revision: 2915
Modified:
SQLObject/branches/0.9/docs/News.txt
SQLObject/branches/0.9/sqlobject/versioning/__init__.py
SQLObject/branches/0.9/sqlobject/versioning/test/test_version.py
Log:
Fixed a bug in Versioning - do not copy "alternateID" and "unique" attributes from the versioned table.
Modified: SQLObject/branches/0.9/docs/News.txt
===================================================================
--- SQLObject/branches/0.9/docs/News.txt 2007-09-14 14:36:51 UTC (rev 2914)
+++ SQLObject/branches/0.9/docs/News.txt 2007-09-14 14:43:59 UTC (rev 2915)
@@ -10,6 +10,9 @@
SQLObject 0.9.2
===============
+* Fixed a bug in Versioning - do not copy "alternateID" and "unique"
+ attributes from the versioned table.
+
* A number of changes ported from `SQLObject 0.7.9`_.
SQLObject 0.9.1
Modified: SQLObject/branches/0.9/sqlobject/versioning/__init__.py
===================================================================
--- SQLObject/branches/0.9/sqlobject/versioning/__init__.py 2007-09-14 14:36:51 UTC (rev 2914)
+++ SQLObject/branches/0.9/sqlobject/versioning/__init__.py 2007-09-14 14:43:59 UTC (rev 2915)
@@ -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/branches/0.9/sqlobject/versioning/test/test_version.py
===================================================================
--- SQLObject/branches/0.9/sqlobject/versioning/test/test_version.py 2007-09-14 14:36:51 UTC (rev 2914)
+++ SQLObject/branches/0.9/sqlobject/versioning/test/test_version.py 2007-09-14 14:43:59 UTC (rev 2915)
@@ -45,10 +45,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:
@@ -159,3 +163,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"
+
|