def add_reader_category_filter(query, category, joined_entities): """ Modifies query to filter by reader type. :param query: The query to further filter. :param category: The category type. :param joined_entities: Which entities have already been joined in the query. Reader filters may require additional joins. This list will be modified if an additional join is made. :return: query (side-effected) """ if Box2 not in joined_entities: query = query.join(Box2) if category == READER_PRODUCTION: query = query.filter(Box2.prod_query()).filter(Box2.reference != True) #elif category == READER_GROOVE: # query = query.filteR(Box2.code.in_()) elif category == READER_LAB: query = query.filter(Box2.lab_query()) elif category == READER_GOLDEN_DR: query = query.filter(Box2.reference == True) elif category == READER_FLUIDICS_MODULES: query = query.filter(Box2.fluidics_module_query()) elif category == READER_DETECTOR_MODULES: query = query.filter(Box2.detector_module_query()) elif category == READER_QX100: query = query.filter(SystemVersion.type == 'QX100') elif category == READER_QX150: query = query.filter(SystemVersion.type == 'QX150') elif category == READER_QX200: query = query.filter(SystemVersion.type == 'QX200') return query
def lab_reader_group_field(empty='--'): """ Intended to be set in a manual environment. Should be ported to a Bootstrap-type scheme like comparable_metric_field() """ box_q = Session.query(Box2).order_by(Box2.name) lab_readers = box_q.filter(Box2.lab_query()).all() prod_readers = box_q.filter(Box2.prod_query()).all() # htmlfill-compatible. if not wowo('contractor'): return [('',empty), ([(box.id, box.name) for box in lab_readers], 'Lab'), ([(box.id, box.name) for box in prod_readers],'Production')] else: return [('',empty), ([(box.id, box.name) for box in prod_readers],'Production')]