On Tue, Apr 24, 2012 at 12:57 AM, David Phillips
<[email protected]> wrote:
> I don't know how to read the tickets web2py generates on app engine. On
> devserver, the tickets are shown in their entirety, but on the production
> server, the datastore viewer only shows the first 1000 or so characters. I
> can't figure out a way to see the entire ticket.
>
> The database management (appadmin) page doesn't show the tickets table,
> although it shows web2py_session_rage.
>
> So, I wrote this action in a controller:
>
> def download_ticket():
>
> id = request.args[0]
>
> rec = db (db.web2py_ticket_rage.id == id).select().first()
>
> return rec.ticket_data
>
>
> where web2py_ticket_rage is the name of the table where the tickets are
> stored according to the dashboard. But when I execute, this exception is
> raised:
>
> KeyError: 'web2py_ticket_rage'
>
You need to db.define_table()
> Fortunately, there is a lot of information in the app engine logs, but I
> would still like to see the ticket. So, is therea way to view tickets on app
> engine?
I have this in the beginning of appadmin after the imports:
if request.env.web2py_runtime_gae:
import cPickle
tablename = 'web2py_ticket_'+request.application
db.define_table(
tablename,
Field('ticket_id', length=100),
Field('ticket_data', 'text'),
Field('created_datetime', 'datetime'),
)
def pre_widget(field, value, **attributes):
return PRE(value)
def traceback_ticket_widget(field, value, **attributes):
return PRE(cPickle.loads(value)['traceback'],
_style="color:#ddd;background-color:#000;padding:4px")
db[tablename].ticket_id.widget = pre_widget
db[tablename].ticket_data.widget = traceback_ticket_widget
db[tablename].created_datetime.widget = pre_widget
and it's working for me.
The definition of the table you can copy from gluon/restricted.py
around line 75.
Note that if you try insert a new ticket through appadmin it will
raise an exception,
but I leave it this way as a way to generate a ticket if I need.
Ricardo