Beispiel #1
0
def query_as_sequence_chained_sorts(fixture):
    """A QueryAsSequence constructed with a query that already has an order_by clause,
       should be able to chain additional sort(order_by) requirements"""

    with fixture.persistent_test_classes(fixture.MyObject):
        [object1, object2, object3] = fixture.objects

        native_query_with_sort = Session.query(fixture.MyObject).order_by(
            fixture.MyObject.name)
        query_as_sequence = QueryAsSequence(native_query_with_sort)

        # another sort(order_by) requirement
        query_as_sequence.sort(key=fixture.MyObject.name, reverse=True)
        sorted_items = [item for item in query_as_sequence]
        vassert(sorted_items == [object3, object1, object2])
Beispiel #2
0
    def __init__(self, view, address_book_ui):
        super().__init__(view)
        self.rows = QueryAsSequence(Session.query(Address).order_by(
            Address.id),
                                    map_function=lambda address: Row(address))

        self.add_child(H(view, 1, text='Addresses'))

        def make_link_widget(view, row):
            return A.from_bookmark(
                view,
                address_book_ui.get_edit_bookmark(row.address,
                                                  description='Edit'))

        columns = [
            StaticColumn(Field(label='Name'), 'name', sort_key=Address.name),
            StaticColumn(EmailField(label='Email'),
                         'email_address',
                         sort_key=Address.email_address),
            StaticColumn(IntegerField(label='Zip'),
                         'zip_code',
                         sort_key=Address.zip_code),
            DynamicColumn('', make_link_widget)
        ]

        table_layout = TableLayout(striped=True)
        data_table = DataTable(view,
                               columns,
                               self.rows,
                               caption_text='All my friends',
                               summary='Summary for screen reader',
                               table_layout=table_layout,
                               css_id='address_data')
        self.add_child(data_table)
Beispiel #3
0
 def new_query_as_sequence(self):
     return QueryAsSequence(Session.query(self.MyObject))