I am trying to export a grid with a custom exporter that has a name ending "with_hidden_cols" in order to export a complete table (and more).
However, my exported file does not contain the hidden cols.
I have diagnosed the problem and believe the following changes yields the expected behavior:
--- a/gluon/sqlhtml.py
+++ b/gluon/sqlhtml.py
@@ -2016,7 +2016,9 @@ class SQLFORM(FORM):
expcolumns = columns
if export_type.endswith('with_hidden_cols'):
- expcolumns = [f for f in fields if f._tablename in tablenames]
+ expfields = reduce(lambda a, b: a + b,
+ [[field for field in table] for table in tables])
+ expcolumns = [f for f in expfields if f._tablename in tablenames]
if export_type in exportManager and exportManager[export_type]:
if request.vars.keywords:
try:
I specify "fields" when creating the grid because I want to limit the number of visible columns. However, in the original sqlhtml.py code the "expcolumns" variable is set using the "fields" variable that has already been limited to the visible columns. My change simply defines a new variable "expfields" using the original way "fields" is defined when it is not specified on grid creation.
I believe this now has the expected behavior. I am using web2py from trunk.
Thanks
Vincent