class CarGrid(Grid): EditColumn('ID', 'id') EditColumn('Edit', 'edit', link_label='edit') DealerColumn('Dealer', 'dealer') Column('Make', 'make') Column('Model', 'model', class_='model') ColorColumn('Color', 'color') BoolColumn('Active', 'active') BoolColumn('Active Reverse', 'active', reverse=True) YesNoColumn('Active Yes/No', 'active') @row_styler def style_row(self, rownum, attrs, record): attrs.id = 'tr_{0}'.format(record['id']) @col_styler('model') def highlight_1500(self, attrs, record): if record['model'] == '1500': attrs.class_ += 'red' @col_filter('color') def pink_is_ugly(self, value): if value == 'pink': return 'pink :(' return value
class PeopleGrid(Grid): session_on = True FirstNameColumn(_('First Name'), Person.firstname, TextFilter) FullNameColumn(_('Full Name')) YesNoColumn(_('Active'), Person.inactive, reverse=True) EmailsColumn(_('Emails')) Column(_('Status'), Status.label.label('status'), StatusFilter(Status.id)) DateTimeColumn(_('Created'), Person.createdts, DateTimeFilter) DateColumn(_('Due Date'), 'due_date') Column(_('Sort Order'), Person.sortorder, render_in='xls') Column(_('State'), Person.state, render_in='xlsx') NumericColumn(_('Number'), Person.numericcol, has_subtotal=True) EnumColumn(_('Account Type'), Person.account_type, OptionsEnumFilter(Person.account_type, enum_type=AccountType)) def query_prep(self, query, has_sort, has_filters): query = query.add_columns( Person.id, Person.lastname, Person.due_date, Person.account_type, ).add_entity(Person).outerjoin(Person.status) # default sort if not has_sort: query = query.order_by(Person.id) return query
class TG(Grid): Column('C1', Person.firstname) Column('C1.5', Person.firstname.label('fn2'), render_in=None) Column('C2', Person.lastname, render_in='xls') BoolColumn('C3', Person.inactive, render_in=('xls', 'html')) YesNoColumn('C4', Person.inactive.label('yesno'), render_in='html') Column('C5', Person.firstname.label('fn3'), render_in='xlsx') Column('C6', Person.firstname.label('fn4'), render_in=('csv'))
class TGrid(Grid): manager = None hide_controls_box = True session_on = False allowed_export_targets = None Column('ID', 'id', can_sort=False) Column('Value', 'value', can_sort=False)
class SimpleGrid(Grid): on_page = 1 per_page = 1 Column('ID', 'id') Column('Name', 'name', filter=TextFilter(Person.firstname)) Column('Status', 'status') Column('Emails', 'emails', can_sort=False)
class TG(Grid): Column('C1', Person.firstname) Column('C1.5', Person.firstname.label('fn2'), render_in=None) LinkColumn('C2', Person.lastname, render_in='xls') BoolColumn('C3', Person.inactive, render_in=('xls', 'html')) YesNoColumn('C4', Person.inactive.label('yesno'), render_in='xlsx') DateColumn('Date', Person.due_date, render_in='xls') DateColumn('DateTime', Person.createdts, render_in='xls') BoolColumn('C5', Person.inactive, render_in=['xls', 'html'])
class AGrid(Grid): firstname = Column('First Name') legacycol1 = Column('LC1') legacycol2 = Column('LC2') def query_base(self, has_sort, has_filters): query = db.session.query(Person.id, Person.firstname, Person.legacycol1, Person.legacycol2) return query
class CTG(Grid): ratio_expr = Person.numericcol / Person.sortorder Column('Numeric', Person.numericcol.label('numeric_col'), has_subtotal=True) Column('Ints', Person.floatcol.label('float_col'), has_subtotal=True) Column('Ratio', Person.numericcol.label('something'), has_subtotal='sum(numeric_col) / sum(float_col)')
class PermissionGrid(Grid): session_on = True PermissionActionColumn('', Permission.id, can_sort=False, render_in='html') Column('Permission', Permission.name, TextFilter) Column('Description', Permission.description, TextFilter) def query_prep(self, query, has_sort, has_filters): # default sort if not has_sort: query = query.order_by(Permission.name, ) return query
class TestGrid(Grid): c3_visible = False Column('C1', Person.firstname) Column('C2', Person.firstname.label('fn2'), visible=False) Column('C3', Person.firstname.label('fn3'), visible=lambda self: self.grid.c3_visible) Column('C4', Person.firstname.label('fn4'), visible=lambda self: self.grid.c4_visible()) def c4_visible(self): return self.c3_visible
class TG(Grid): Column('C1', Person.firstname, xls_width=1) LinkColumn('C2', Person.lastname, xls_width=1) BoolColumn('C3', Person.inactive, xls_width=1) YesNoColumn('C4', Person.inactive.label('yesno'), xls_width=1) DateColumn('Date', Person.due_date, xls_width=1) DateColumn('DateTime', Person.createdts, xls_width=1)
class CTG(Grid): Column('First Name', Person.firstname) def query_prep(self, query, has_sort, has_filters): assert not has_sort assert not has_filters return query.order_by(Person.lastname)
class TG(Grid): Column('First Name', Person.firstname) def set_renderers(self): super(TG, self).set_renderers() self.xls = export_xls self.xlsx = export_xlsx
class TG(Grid): Column('First Name', Person.firstname) allowed_export_targets = {'csv': CSV} def set_renderers(self): super(TG, self).set_renderers() self.csv = export_csv
class TG(Grid): Column('ID', Person.id, TextFilter, can_sort=False, visible=False) FirstNameColumn('First Name', Person.firstname, TextFilter, can_sort=False, link_label='hi', visible=False) YesNoColumn('Active', Person.inactive, TextFilter, can_sort=False, reverse=True, visible=False) # DateColumn & DateTime Column are just subclasses of DateColumnBase # so we don't need to explicitly test both DateTimeColumn('Created', Person.createdts, DateFilter, can_sort=False, html_format='foo', visible=False) NumericColumn('Address', Person.address, IntFilter, can_sort=False, visible=False)
class TG(Grid): Column('C1', Person.firstname, xls_num_format='General') LinkColumn('C2', Person.lastname, xls_num_format='General') BoolColumn('C3', Person.inactive, xls_num_format='General') YesNoColumn('C4', Person.inactive.label('yesno'), xls_num_format='General') DateColumn('Date', Person.due_date, xls_num_format='General') DateColumn('DateTime', Person.createdts)
class TG(Grid): Column('C1', Person.firstname, xls_style='font: bold True') LinkColumn('C2', Person.lastname, xls_style='font: bold True') BoolColumn('C3', Person.inactive, xls_style='font: bold True') YesNoColumn('C4', Person.inactive.label('yesno'), xls_style='font: bold True') DateColumn('Date', Person.due_date, xls_style='font: bold True') DateColumn('DateTime', Person.createdts, xls_style='font: bold True')
class PGTotalsStringExpr(PeopleGrid): subtotals = 'all' Column('FloatCol', 'float_col', has_subtotal=True) def query_prep(self, query, has_sort, has_filters): query = super(PGTotalsStringExpr, self).query_prep(query, has_sort, has_filters) return query.add_columns(Person.floatcol.label('float_col'))
class WidgetGrid(Grid): endpoint = 'WidgetCrud' @property def has_delete(self): return True class ActionColumn(Column): has_edit = True @property def has_delete(self): return self.grid.has_delete def extract_data(self, rec): edit_link = '' if self.has_edit: edit_link = link_to('(edit)', url_for(self.grid.endpoint, action='edit', objid=rec.id, session_key=self.grid.session_key), class_='edit_link', title='edit record') delete_link = '' if self.has_delete: delete_link = link_to('(delete)', url_for( self.grid.endpoint, action='delete', objid=rec.id, session_key=self.grid.session_key), class_='delete_link', title='delete record') return literal('{0}{1}'.format( delete_link, edit_link, )) ActionColumn('Actions', orm.Widget.id) Column('Type', orm.Widget.widget_type) Column('Color', orm.Widget.color) Column('Quantity', orm.Widget.quantity) DateTimeColumn('Created', orm.Widget.createdts) DateTimeColumn('Last Updated', orm.Widget.updatedts)
class UserGrid(Grid): session_on = True UserActionColumn('', User.id, can_sort=False, render_in='html') Column('Login ID', User.login_id, TextFilter) Column('Name', User.name, TextFilter) YesNoColumn('Super User', User.super_user, YesNoFilter) YesNoColumn('Reset Required', User.reset_required, YesNoFilter) YesNoColumn('Inactive', User.inactive, YesNoFilter) PermissionMapColumn('Permission Map', None, can_sort=False) def query_prep(self, query, has_sort, has_filters): query = query.add_entity(User) # default sort if not has_sort: query = query.order_by(User.name, ) return query
class TG(Grid): c6_render_in = 'csv' Column('C1', Person.firstname) Column('C1.5', Person.firstname.label('fn2'), render_in=None) LinkColumn('C2', Person.lastname, render_in='xls') BoolColumn('C3', Person.inactive, render_in=('xls', 'html')) YesNoColumn('C4', Person.inactive.label('yesno'), render_in='xlsx') DateColumn('Date', Person.due_date, render_in='xls') DateColumn('DateTime', Person.createdts, render_in='xls') BoolColumn('C5', Person.inactive, render_in=['xls', 'html']) Column('C6', Person.firstname.label('fn3'), render_in=lambda self: self.grid.c6_render_in) Column('C7', Person.firstname.label('fn4'), render_in=lambda self: self.grid.c7_render_in()) def c7_render_in(self): return [self.c6_render_in, 'xlsx']
class GroupGrid(Grid): session_on = True GroupActionColumn('', Group.id, can_sort=False, render_in='html') Column('Group', Group.name, TextFilter) def query_prep(self, query, has_sort, has_filters): # default sort if not has_sort: query = query.order_by(Group.name, ) return query
class PeopleGrid(Grid): session_on = True allowed_export_targets = {'csv': CSV, 'xls': XLS, 'xlsx': XLSX} FirstNameColumn('First Name', Person.firstname, TextFilter) FullNameColumn('Full Name') YesNoColumn('Active', Person.inactive, reverse=True) EmailsColumn('Emails') Column('Status', Status.label.label('status'), StatusFilter(Status.id)) DateTimeColumn('Created', Person.createdts, DateTimeFilter) DateColumn('Due Date', 'due_date') Column('Sort Order', Person.sortorder, render_in='xls') NumericColumn('Number', Person.numericcol, has_subtotal=True) def query_prep(self, query, has_sort, has_filters): query = query.add_columns( Person.id, Person.lastname, Person.due_date).add_entity(Person).outerjoin(Person.status) # default sort if not has_sort: query = query.order_by(Person.id) return query
class TG(Grid): Column('Name', Person.firstname, tf)
class TestGrid(Grid): subtotals = 'all' Column('First Name', Person.firstname) NumericColumn('Number', Person.numericcol, has_subtotal=True)
class TGrid(Grid): hide_excel_link = True Column('Test', Person.id)
class TGrid(Grid): Column('Test', Person.id)
class TG(Grid): Column('C1', Person.firstname) Column('C2', Person.lastname, xls_width=10) C3('C3', Person.state) DateColumn('Date', Person.due_date)
def test_group_attr_error(self): Column('label', Person.id, group='not a ColumnGroup')
class TGrid(Grid): enable_search = True Column('Test', Person.id)