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])
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)
def new_query_as_sequence(self): return QueryAsSequence(Session.query(self.MyObject))