Merge pull request #252 from timrichardson/issue/1692v3
Issue/1692v3 OK merged my fix for virtual fields when fields argument is specified
This commit is contained in:
+8
-6
@@ -1913,6 +1913,11 @@ class SQLFORM(FORM):
|
||||
tablenames += db._adapter.tables(join)
|
||||
tables = [db[tablename] for tablename in tablenames]
|
||||
if fields:
|
||||
#add missing tablename to virtual fields
|
||||
for table in tables:
|
||||
for k,f in table.iteritems():
|
||||
if isinstance(f,Field.Virtual):
|
||||
f.tablename = table._tablename
|
||||
columns = [f for f in fields if f.tablename in tablenames]
|
||||
else:
|
||||
fields = []
|
||||
@@ -1926,9 +1931,8 @@ class SQLFORM(FORM):
|
||||
if not k.startswith('_'):
|
||||
if isinstance(f,Field.Virtual) and f.readable:
|
||||
f.tablename = table._tablename
|
||||
columns.append(f)
|
||||
fields.append(f)
|
||||
|
||||
columns.append(f)
|
||||
if not field_id:
|
||||
if groupby is None:
|
||||
field_id = tables[0]._id
|
||||
@@ -2271,11 +2275,9 @@ class SQLFORM(FORM):
|
||||
limitby = (paginate*page,paginate*(page+1))
|
||||
else:
|
||||
limitby = None
|
||||
|
||||
try:
|
||||
table_fields = filter(
|
||||
lambda f: (f.tablename in tablenames) and \
|
||||
(not(isinstance(f,Field.Virtual))),fields)
|
||||
table_fields = [field for field in fields
|
||||
if (field.tablename in tablenames and not(isinstance(field,Field.Virtual)))]
|
||||
if dbset._db._adapter.dbengine=='google:datastore':
|
||||
rows = dbset.select(left=left,orderby=orderby,
|
||||
groupby=groupby,limitby=limitby,
|
||||
|
||||
Reference in New Issue
Block a user