also, the grid relies on the id for other functions, it's always better to 
include it 

On Saturday, February 13, 2016 at 12:20:22 AM UTC+1, Anthony wrote:
>
> This can probably be improved, but the problem is that your grid does not 
> include all the fields needed by the "represent" function (i.e., it is 
> missing the "id" field). You could (a) re-write the represent so it doesn't 
> fail when the "id" field is missing, (b) use one of the "hidden column" 
> downloads instead, or (c) in the controller, check whether the request is 
> for an export (i.e, '_export_type' in request.vars), and include the "id" 
> field in that case.
>
> Unfortunately, these solutions mean you either won't have the 
> "represented" value in the CSV file (which you may not want anyway, as it 
> is an HTML anchor tag in this case), or you will have extra fields that you 
> otherwise might want excluded (in this case, the "id" field).
>
> Note, you can also use the "exportclasses" argument to provide your own 
> custom export class, and use something like option (c) above, but write the 
> export class so it excludes any columns you want to hide.
>
> Anthony
>
> On Friday, February 12, 2016 at 5:01:40 PM UTC-5, olivier hubert wrote:
>>
>>
>> I implemented a clone of Notifier application from Massimo.
>> If I try to export data from the grid via the grid bottom button I 
>> receive an error if I use export to CSV, HTML & TSV but not with JSON or 
>> XML.
>>
>> *default.py*
>> @auth.requires_login()
>> def tasks():
>>     db.task.created_on.readable = True
>>     db.task.created_by.readable = True
>>     db.task.title.represent = lambda title, row:A(title, _href=URL(
>> 'view_task', args=row.id))
>>     query = (db.task.assigned_to==me)|(db.task.created_by==me)
>>     grid = SQLFORM.grid(query,
>>                         orderby=~db.task.modified_on,
>>                         create=False,
>>                         details=False,
>>                         editable=False,
>>                         deletable=lambda row: (row.created_by==me),
>>                         fields=[
>>                                 db.task.status,
>>                                 db.task.title,
>>                                 db.task.created_on,
>>                                 db.task.deadline,
>>                                 db.task.created_by,
>>                                 db.task.assigned_to
>>                         ])
>>     return locals()
>>
>> *Traceback*
>>
>>  Traceback (most recent call last):
>>  File "/home/sysadmin/Téléchargements/web2py/gluon/restricted.py", line 
>> 227, in restricted
>>  exec ccode in environment
>>  File 
>> "/home/sysadmin/Téléchargements/web2py/applications/tasklist/controllers/default.py"
>>  
>> <http://127.0.0.1:8000/admin/default/edit/tasklist/controllers/default.py>
>> , line 134, in <module>
>>  File "/home/sysadmin/Téléchargements/web2py/gluon/globals.py", line 412, 
>> in <lambda>
>>  self._caller = lambda f: f()
>>  File "/home/sysadmin/Téléchargements/web2py/gluon/tools.py", line 4236, 
>> in f
>>  return action(*a, **b)
>>  File 
>> "/home/sysadmin/Téléchargements/web2py/applications/tasklist/controllers/default.py"
>>  
>> <http://127.0.0.1:8000/admin/default/edit/tasklist/controllers/default.py>
>> , line 31, in tasks
>>  db.task.assigned_to
>>  File "/home/sysadmin/Téléchargements/web2py/gluon/sqlhtml.py", line 2440
>> , in grid
>>  raise HTTP(200, oExp.export(), **response.headers)
>>  File "/home/sysadmin/Téléchargements/web2py/gluon/sqlhtml.py", line 3468
>> , in export
>>  self.rows.export_to_csv_file(s, represent=True)
>>  File 
>> "/home/sysadmin/.local/lib/python2.7/site-packages/pydal/objects.py", 
>> line 2412, in export_to_csv_file
>>  value = field.represent(value, record)
>>  File 
>> "/home/sysadmin/Téléchargements/web2py/applications/tasklist/controllers/default.py"
>>  
>> <http://127.0.0.1:8000/admin/default/edit/tasklist/controllers/default.py>
>> , line 17, in <lambda>
>>  db.task.title.represent = lambda title, row:A(title, _href=URL(
>> 'view_task', args=row.id))
>>  File 
>> "/home/sysadmin/.local/lib/python2.7/site-packages/pydal/objects.py", 
>> line 90, in __getattr__
>>  raise AttributeError
>> AttributeError
>>
>>
>> The error come from the bellow code line from the file default.py
>> db.task.title.represent = lambda title, row:A(title, _href=URL(
>> 'view_task', args=row.id))
>>
>> If I remove the previous row the export function work for all format but 
>> I lose the cliquable link on the task title.
>>
>> I checked with the Notifier application available on GitHub 
>> https://github.com/mdipierro/web2py-appliances/tree/master/Notifier and 
>> I see the same problem.
>>
>> If you can help me it's very appreciate.
>>
>> Kind regards
>> Olivier
>>
>>
>>
>>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to