Example #1
0
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
Example #2
0
def box2_field(selected=None, empty='--', prod_only=False, exclude_fluidics_modules=False,order_by='name',order_desc=False):

    if ( order_desc ):
        box_q = Session.query(Box2).order_by( getattr(Box2,order_by).desc() )
    else:
        box_q = Session.query(Box2).order_by( getattr(Box2,order_by) )

    if prod_only or wowo('contractor'):
        box_q = box_q.filter(Box2.prod_query())
    if exclude_fluidics_modules:
        box_q = box_q.filter(Box2.whole_readers_only_query())
    boxes = box_q.all()
    return {'value': selected or '',
            'options': [('',empty)]+
                       [(box.id, box.name) for box in boxes]}
Example #3
0
def fluidics_module_field(selected=None, empty='--'):
    box_q = Session.query(Box2).filter(Box2.fluidics_modules_only_query())\
                               .order_by(Box2.name)
    boxes = box_q.all()
    
    return {'value': selected or '',
            'options': [('',empty)]+
                       [(box.id, box.name) for box in boxes]}
Example #4
0
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')]
Example #5
0
def total_events():
    plate_query = Session.query(QLBPlate,
                                func.sum(QLBWell.event_count).label('total_count')).\
                                join(QLBWell).\
                                join(QLBPlate.plate).\
                                join(Plate.box2).\
                                filter(and_(QLBPlate.plate_id != None, QLBWell.file_id != None)).\
                                group_by(QLBWell.plate_id)
    if wowo('contractor'):
        plate_query = plate_query.filter(Box2.prod_query())
    return sum([total_count or 0 for plate, total_count in plate_query.all()])
Example #6
0
def time_events(start, end):
    plate_query = QLBPlate.filter_by_host_datetime(Session.query(QLBPlate,
                                                                 func.sum(QLBWell.event_count).label('total_count')).
                                                           join(QLBWell).\
                                                           join(QLBPlate.plate).\
                                                           join(Plate.box2).\
                                                           filter(and_(QLBPlate.plate_id != None,
                                                                       QLBWell.file_id != None)),
                                                    start, end)
    
    if wowo('contractor'):
        plate_query = plate_query.filter(Box2.prod_query())
    return sum([total_count or 0 for plate, total_count in plate_query.all()])
Example #7
0
def plate_runtimes_for_operator_range(start, end):
    plate_query = QLBPlate.filter_by_host_datetime(Session.query(QLBPlate,
                                                                 func.count(QLBWell).label('wells'),
                                                                 func.sum(func.if_(QLBWell.event_count >= 1000, 1, 0)).label('data_wells'),
                                                                 func.sum(QLBWell.event_count).label('data_well_events')).
                                                           join(QLBWell).\
                                                           join(QLBPlate.plate).\
                                                           join(Plate.box2).\
                                                           filter(and_(QLBPlate.plate_id != None,
                                                                       QLBWell.file_id != None)),
                                                   start, end).group_by(QLBWell.plate_id).options(joinedload_all('plate.box2', innerjoin=True),
                                                                                                  joinedload_all('plate.operator'))
    if wowo('contractor'):
        plate_query = plate_query.filter(Box2.prod_query())
    return plate_query.all()
Example #8
0
def plate_runtimes_for_box_range(start, end):
    plate_query = QLBPlate.filter_by_host_datetime(Session.query(QLBPlate,
                                                                 func.min(QLBWell.host_datetime).label('start_time'),
                                                                 func.max(QLBWell.host_datetime).label('end_time')).
                                                           join(QLBWell).\
                                                           join(QLBPlate.plate).\
                                                           join(Plate.box2).\
                                                           filter(and_(QLBPlate.plate_id != None,
                                                                       QLBWell.file_id != None)),
                                                   start, end).group_by(QLBWell.plate_id).options(joinedload_all('plate.box2', innerjoin=True),
                                                                                                  joinedload_all('plate.operator'))
    if wowo('contractor'):
        plate_query = plate_query.filter(Box2.prod_query())
    runtimes = plate_query.all()
    # TODO: engineer quick fix for this
    return [runtime for runtime in runtimes if runtime.start_time and runtime.end_time]
Example #9
0
 def __detector_modules(self):
     dm_query = Session.query(Box2).filter(Box2.detector_module_query()).order_by('name desc')
     box2s = dm_query.all()
     return box2s   
Example #10
0
 def __fluidics_modules(self):
     fm_query = Session.query(Box2).filter(Box2.fluidics_module_query()).order_by('name desc')
     box2s = fm_query.all()
     return box2s
Example #11
0
 def __prod_readers(self):
     box2_query = Session.query(Box2).filter(Box2.reader_query()).order_by('name desc')
     box2s = box2_query.all()
     return box2s