I ended up writing this for myself; if anyone is interested here's
the patch. Now you can do:
PhoneNumber.selectBy(user=myuser)
in addition to
PhoneNumber.selectBy(userID=myuser.id)
Index: dbconnection.py
===================================================================
--- dbconnection.py (revision 1186)
+++ dbconnection.py (working copy)
@@ -418,12 +418,20 @@
self.sqlrepr(firstValue),
self.sqlrepr(secondValue)))
+ def _SO_kwpair2dbpair(self, soClass, key, value):
+ dbcolumn = soClass._SO_columnDict.get(key)
+ if dbcolumn:
+ return (dbcolumn.dbName, self.sqlrepr(value))
+ dbcolumnid = soClass._SO_columnDict.get(key+'ID')
+ if dbcolumnid:
+ return (dbcolumnid.dbName, self.sqlrepr(value.id))
+ raise Exception, 'Invalid keyword "%s" to selectBy' %(key)
+
def _SO_columnClause(self, soClass, kw):
return ' AND '.join(['%s = %s' %
- (soClass._SO_columnDict[key].dbName,
- self.sqlrepr(value))
- for key, value
- in kw.items()])
+ self._SO_kwpair2dbpair(soClass, key, value)
+ for key, value
+ in kw.items()])
def sqlrepr(self, v):
return sqlrepr(v, self.dbName)
--
Karl 2004-06-24 04:51
|