def assay_name_field(blank=False, include_empties=False, empty='', selected=None): if include_empties: assay_q = Session.query(Assay).order_by(Assay.name) else: assay_q = Assay.populated_valid_query(Session).order_by(Assay.name) assays = assay_q.all() # TODO: this part can be refactored field = {'value': selected or '', 'options': [(str(assay.name), assay.name) for assay in assays]} if blank: field['options'].insert(0, ('', empty)) return field
def list(self): """ TODO: add pagination if necessary """ show_blanks = request.params.get("blank", False) if show_blanks: assay_q = Session.query(Assay) else: assay_q = Assay.populated_valid_query(Session) c.assays = assay_q.order_by(Assay.name).all() assay_field = fl.assay_field(empty="", include_empties=show_blanks, blank=True) c.assay_form = h.LiteralFormSelectPatch( value={"assay_id": assay_field["value"]}, option={"assay_id": assay_field["options"]} ) return render("/assay/list.html")