On Tue, Apr 24, 2012 at 12:57 AM, David Phillips
<david.phillips....@gmail.com> 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

Reply via email to