Author: phd
Date: 2009-04-16 09:55:36 -0600 (Thu, 16 Apr 2009)
New Revision: 3852
Modified:
SQLObject/trunk/docs/News.txt
SQLObject/trunk/sqlobject/postgres/pgconnection.py
Log:
Merged revision 3851 from branch 0.10:
a bug was fixed in PostgresConnection.columnsFromSchema() - foreign keys
are now recognized and created as proper ForeignKey with correct
column name and table name.
Modified: SQLObject/trunk/docs/News.txt
===================================================================
--- SQLObject/trunk/docs/News.txt 2009-04-16 15:53:15 UTC (rev 3851)
+++ SQLObject/trunk/docs/News.txt 2009-04-16 15:55:36 UTC (rev 3852)
@@ -168,11 +168,16 @@
* Setup requires FormEncode version 1.1.1+.
-* Fixed a minor bug - pass name to DecimalValidator.
+* A minor bug was fixed in creating a DecimalValidator - pass the column name
+ to it.
-* Fixed a bug in InheritableIteration - pass connection to child
+* A bug was fixed in InheritableIteration - pass connection to child
klass.select().
+* A bug was fixed in PostgresConnection.columnsFromSchema() - foreign keys
+ are now recognized and created as proper ForeignKey with correct
+ column name and table name.
+
SQLObject 0.9.9
===============
Modified: SQLObject/trunk/sqlobject/postgres/pgconnection.py
===================================================================
--- SQLObject/trunk/sqlobject/postgres/pgconnection.py 2009-04-16 15:53:15 UTC (rev 3851)
+++ SQLObject/trunk/sqlobject/postgres/pgconnection.py 2009-04-16 15:55:36 UTC (rev 3852)
@@ -238,19 +238,25 @@
for field, t, notnull, defaultstr in colData:
if field == primaryKey:
continue
- colClass, kw = self.guessClass(t)
- if self.unicodeCols and colClass is col.StringCol:
- colClass = col.UnicodeCol
- kw['dbEncoding'] = client_encoding
- kw['name'] = soClass.sqlmeta.style.dbColumnToPythonAttr(field)
+ if keymap.has_key(field):
+ colClass = col.ForeignKey
+ kw = {'foreignKey': soClass.sqlmeta.style.dbTableToPythonClass(keymap[field])}
+ name = soClass.sqlmeta.style.dbColumnToPythonAttr(field)
+ if name.endswith('ID'):
+ name = name[:-2]
+ kw['name'] = name
+ else:
+ colClass, kw = self.guessClass(t)
+ if self.unicodeCols and colClass is col.StringCol:
+ colClass = col.UnicodeCol
+ kw['dbEncoding'] = client_encoding
+ kw['name'] = soClass.sqlmeta.style.dbColumnToPythonAttr(field)
kw['dbName'] = field
kw['notNone'] = notnull
if defaultstr is not None:
kw['default'] = self.defaultFromSchema(colClass, defaultstr)
elif not notnull:
kw['default'] = None
- if keymap.has_key(field):
- kw['foreignKey'] = keymap[field]
results.append(colClass(**kw))
return results
|