grid = Grid(path, db.Events.id>0,
orderby=~db.Events.DateTime,
headings=['Datetime', 'Event', 'Venue', 'Paid', 'TBC', 'Conf', 'Wait'],
columns=[db.Events.DateTime,
Column('event', lambda row: A(row.Description, _href=URL(f"event_reservations/{row['id']}"),),
td_class_style="grid-cell-type-string"),
db.Events.Venue,
Column('Paid', lambda row: event_revenue(row.id) or ''),
Column('TBC', lambda row: event_unpaid(row.id) or ''),
Column('Conf', lambda row: event_attend(row.id) or ''),
Column('Wait', lambda row: event_wait(row.id) or '')],
search_queries=[["Event", lambda value: db.Events.Description.ilike(f'%{value}%')],
["Venue", lambda value: db.Events.Venue.ilike(f'%{value}%')],
["Speaker", lambda value: db.Events.Speaker.ilike(f'%{value}%')]],
details=not write, editable=write, create=write,
deletable=lambda r: write and db(db.Reservations.Event == r['id']).count() == 0 and db(db.AccTrans.Event == r['id']).count() == 0,
validation=validation,
grid_class_style=grid_style,
formstyle=form_style,
)