Author: phd
Date: 2008-03-11 06:45:44 -0600 (Tue, 11 Mar 2008)
New Revision: 3327
Modified:
SQLObject/branches/0.10/docs/News.txt
SQLObject/branches/0.10/sqlobject/inheritance/__init__.py
Log:
A bug in inheritable delColumn() that doesn't removes properties was fixed.
Modified: SQLObject/branches/0.10/docs/News.txt
===================================================================
--- SQLObject/branches/0.10/docs/News.txt 2008-03-11 12:45:10 UTC (rev 3326)
+++ SQLObject/branches/0.10/docs/News.txt 2008-03-11 12:45:44 UTC (rev 3327)
@@ -78,6 +78,11 @@
* Under MySQL, PickleCol no longer uses TEXT column types; the smallest
column is now BLOB - it is not possible to create TINYBLOB column.
+SQLObject 0.9.6
+===============
+
+* A bug in inheritable delColumn() that doesn't removes properties was fixed.
+
SQLObject 0.9.5
===============
Modified: SQLObject/branches/0.10/sqlobject/inheritance/__init__.py
===================================================================
--- SQLObject/branches/0.10/sqlobject/inheritance/__init__.py 2008-03-11 12:45:10 UTC (rev 3326)
+++ SQLObject/branches/0.10/sqlobject/inheritance/__init__.py 2008-03-11 12:45:44 UTC (rev 3327)
@@ -2,7 +2,7 @@
from sqlobject import classregistry
from sqlobject.col import StringCol, ForeignKey
from sqlobject.main import sqlmeta, SQLObject, SelectResults, \
- makeProperties, getterName, setterName
+ makeProperties, unmakeProperties, getterName, setterName
import iteration
try:
@@ -132,19 +132,27 @@
addColumn = classmethod(addColumn)
- def delColumn(sqlmeta, column, changeSchema=False, connection=None):
- soClass = sqlmeta.soClass
+ def delColumn(sqlmeta, column, changeSchema=False, connection=None, childUpdate=False):
+ if childUpdate:
+ soClass = sqlmeta.soClass
+ unmakeProperties(soClass)
+ makeProperties(soClass)
+
+ if isinstance(column, str):
+ name = column
+ else:
+ name = column.name
+ delattr(soClass, name)
+ delattr(soClass.q, name)
+ return
+
super(InheritableSQLMeta, sqlmeta).delColumn(column, changeSchema, connection)
- if isinstance(column, str):
- name = column
- else:
- name = column.name
-
#DSM: Update each child class if needed
#DSM: and delete properties for this column
for c in sqlmeta.childClasses.values():
- delattr(c.q, name)
+ c.sqlmeta.delColumn(column, changeSchema=changeSchema,
+ connection=connection, childUpdate=True)
delColumn = classmethod(delColumn)
@@ -179,15 +187,19 @@
addJoin = classmethod(addJoin)
- def delJoin(sqlmeta, joinDef):
- soClass = sqlmeta.soClass
+ def delJoin(sqlmeta, joinDef, childUpdate=False):
+ if childUpdate:
+ soClass = sqlmeta.soClass
+ unmakeProperties(soClass)
+ makeProperties(soClass)
+ return
+
super(InheritableSQLMeta, sqlmeta).delJoin(joinDef)
#DSM: Update each child class if needed
#DSM: and delete properties for this join
for c in sqlmeta.childClasses.values():
- # FIXME: what is ``meth``?
- delattr(c, meth)
+ c.sqlmeta.delJoin(joinDef, childUpdate=True)
delJoin = classmethod(delJoin)
|