Пример #1
0
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
Пример #2
0
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
Пример #3
0
 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'))
Пример #4
0
        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)
Пример #5
0
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)
Пример #6
0
 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'])
Пример #7
0
        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
Пример #8
0
 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)')
Пример #9
0
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
Пример #10
0
        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
Пример #11
0
 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)
Пример #12
0
        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)
Пример #13
0
        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
Пример #14
0
        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
Пример #15
0
 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)
Пример #16
0
 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)
Пример #17
0
 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')
Пример #18
0
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'))
Пример #19
0
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)
Пример #20
0
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
Пример #21
0
        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']
Пример #22
0
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
Пример #23
0
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
Пример #24
0
 class TG(Grid):
     Column('Name', Person.firstname, tf)
Пример #25
0
 class TestGrid(Grid):
     subtotals = 'all'
     Column('First Name', Person.firstname)
     NumericColumn('Number', Person.numericcol, has_subtotal=True)
Пример #26
0
 class TGrid(Grid):
     hide_excel_link = True
     Column('Test', Person.id)
Пример #27
0
 class TGrid(Grid):
     Column('Test', Person.id)
Пример #28
0
 class TG(Grid):
     Column('C1', Person.firstname)
     Column('C2', Person.lastname, xls_width=10)
     C3('C3', Person.state)
     DateColumn('Date', Person.due_date)
Пример #29
0
 def test_group_attr_error(self):
     Column('label', Person.id, group='not a ColumnGroup')
Пример #30
0
 class TGrid(Grid):
     enable_search = True
     Column('Test', Person.id)