From 0206fa024bf3ddafa42902c4e0fdccde8fd7f475 Mon Sep 17 00:00:00 2001 From: Massimo DiPierro Date: Mon, 21 May 2012 09:55:05 -0500 Subject: [PATCH] db(db.a)._update(name=db(db.b.a==db.a.id).nested_select(db.b.id)) --- VERSION | 2 +- gluon/dal.py | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/VERSION b/VERSION index 3643f23d..1c80a83d 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.00.0 (2012-05-20 10:09:09) dev +Version 2.00.0 (2012-05-21 09:55:00) dev diff --git a/gluon/dal.py b/gluon/dal.py index 0a030aab..d4378eb9 100644 --- a/gluon/dal.py +++ b/gluon/dal.py @@ -1130,7 +1130,9 @@ class BaseAdapter(ConnectionPool): elif not isinstance(expression.op, str): return expression.op() else: - return '(%s)' % expression.op + op = expression.op + if op.endswith(';'): op=op[:-1] + return '(%s)' % op elif field_type: return str(self.represent(expression,field_type)) elif isinstance(expression,(list,tuple)): @@ -7981,8 +7983,6 @@ class Field(Expression): return '.%s' % self.name -def raw(s): return Expression(None,s) - class Query(object): """ @@ -8071,7 +8071,7 @@ class Set(object): if isinstance(query,Table): query = query._id>0 elif isinstance(query,str): - query = raw(query) + query = Expression(self.db,query) elif isinstance(query,Field): query = query!=None if self.query: @@ -8109,6 +8109,9 @@ class Set(object): fields = adapter.expand_all(fields, adapter.tables(self.query)) return adapter.select(self.query,fields,attributes) + def nested_select(self,*fields,**attributes): + return Expression(self.db,self._select(*fields,**attributes)) + def delete(self): tablename=self.db._adapter.get_table(self.query) table = self.db[tablename]