Пример #1
0
    def reader(self, id=None):
        box2 = self.__setup_box2_context_by_code(id)
        
        c.admin = True
        circuit_id = request.params.get('circuit_id', None)
        circuit_log = None
        if circuit_id:
            circuit = Session.query(Box2Circuit).get(int(circuit_id))
            circuit_log = Session.query(Box2Log).get(circuit.log_template_id)
        logs = Session.query(Box2Log).filter_by(box2_id=box2.id).order_by('time_effective desc').all()
        if len(logs) > 0:
            last_log = logs[0]
        else:
            last_log = None
        
        c.dr = box2
        c.circuits = Session.query(Box2Circuit).order_by('name').all()

        value_dict = {'day_effective': date.today().strftime('%m/%d/%Y'),
                      'time_effective': datetime.now().time().strftime('%I:%M%p')}
        if last_log:
            value_dict.update({'box2_id': box2.id,
                         'box2_circuit_id': None,
                         'detector': last_log.detector,
                         'singulator_type': last_log.singulator_type,
                         'singulator_material': last_log.singulator_material,
                         'capillary': last_log.capillary,
                         'tip_lot_number': last_log.tip_lot_number,
                         'tip_supplier': last_log.tip_supplier,
                         'tip_material': last_log.tip_material,
                         'tip_size': last_log.tip_size,
                         'routine_version': last_log.routine_version,
                         'door_type': str(last_log.door_type),
                         'skin_on': last_log.skin_on,
                         'air_filter_location': last_log.air_filter_location,
                         'peristaltic_tubing': last_log.peristaltic_tubing,
                         'bottle_trough_hold_in_status': str(last_log.bottle_trough_hold_in_status),
                         'plate_sensor_status': str(last_log.plate_sensor_status),
                         'lid_sensor_status': str(last_log.lid_sensor_status),
                         'biochem_configuration': last_log.biochem_configuration,
                         'quantasoft_version': last_log.quantasoft_version,
                         'waste_bottle_empty': last_log.waste_bottle_empty,
                         'carrier_bottle_empty': last_log.carrier_bottle_empty,
                         'waste_bottle_full': last_log.waste_bottle_full,
                         'carrier_bottle_full': last_log.carrier_bottle_full,
                         'fluidics_circuit': last_log.fluidics_circuit,
                         'pickup_line': last_log.pickup_line,
                         'reservoir_line': last_log.reservoir_line,
                         'waste_downspout': last_log.waste_downspout,
                         'firmware_mcu9': last_log.firmware_mcu9,
                         'firmware_dll130': last_log.firmware_dll130,
                         'firmware_fpga16': last_log.firmware_fpga16,
                         'firmware_fluidics': last_log.firmware_fluidics,
                         'firmware_motor': last_log.firmware_motor})
        if circuit_log:
            value_dict.update({'box2_circuit_id': circuit_id,
                               'singulator_type': circuit_log.singulator_type,
                               'singulator_material': circuit_log.singulator_material,
                               'capillary': circuit_log.capillary,
                               'door_type': str(circuit_log.door_type),
                               'air_filter_location': circuit_log.air_filter_location,
                               'peristaltic_tubing': circuit_log.peristaltic_tubing,
                               'biochem_configuration': circuit_log.biochem_configuration,
                               'fluidics_circuit': circuit_log.fluidics_circuit,
                               'pickup_line': circuit_log.pickup_line,
                               'reservoir_line': circuit_log.reservoir_line,
                               'waste_downspout': circuit_log.waste_downspout})
            session['flash'] = 'Circuit %s selected.  Click "Update %s" to save these settings.' % (circuit.name, box2.name)
            session.save()
        

        skin_on = fl.checkbox_field(checked=value_dict.get('skin_on', u'1'))
        door_type = fl.dr_door_type_field(selected=value_dict.get('door_type', None))
        bottle_trough_field = fl.dr_installed_field(value_dict.get('bottle_trough_hold_in_status', None))
        plate_sensor_field = fl.dr_sensor_field(value_dict.get('plate_sensor_status', None))
        lid_sensor_field = fl.dr_sensor_field(value_dict.get('lid_sensor_status', None))
        
        # checkboxes suck
        value_dict['skin_on'] = skin_on['value']
        option_dict = {'skin_on': skin_on['options'],
                       'door_type': door_type['options'],
                       'bottle_trough_hold_in_status': bottle_trough_field['options'],
                       'plate_sensor_status': plate_sensor_field['options'],
                       'lid_sensor_status': lid_sensor_field['options']}
        
        c.form = h.LiteralForm(value = value_dict, option = option_dict)
        c.circuit_id = circuit_id or ''
        return render('/admin/reader.html')
Пример #2
0
from sqlalchemy.orm import joinedload_all
from datetime import datetime, date, time, timedelta
import formencode
import re


log = logging.getLogger(__name__)

box2log_mv = DocModelView(Box2Log,
                          exclude_columns=['time_effective'],
                          include_columns=['circuit'],
                          column_label_transforms={'circuit': lambda k: 'Circuit'},
                          global_value_transform=lambda v: '' if v is None else v,
                          column_value_transforms={'circuit': lambda v: v.name if v else '',
                                                   'skin_on': lambda v: {None: 'No', False: 'No', True: 'Yes'}[v],
                                                   'door_type': lambda v: dict(fl.dr_door_type_field(v)['options']).get(v,'')})

class ReaderUpdateForm(formencode.Schema):
    allow_extra_fields = True
    filter_extra_fields = True

    box2_id = IntKeyValidator(Box2, 'id', not_empty=True)
    box2_circuit_id = IntKeyValidator(Box2Circuit, 'id', not_empty=False, if_missing=None)
    detector = formencode.validators.String(not_empty=False, if_missing=None)
    singulator_type = formencode.validators.String(not_empty=False, if_missing=None)
    singulator_material = formencode.validators.String(not_empty=False, if_missing=None)
    capillary = formencode.validators.String(not_empty=False, if_missing=None)
    tip_lot_number = formencode.validators.String(not_empty=False, if_missing=None)
    tip_supplier = formencode.validators.String(not_empty=False, if_missing=None)
    tip_material = formencode.validators.String(not_empty=False, if_missing=None)
    tip_size = formencode.validators.String(not_empty=False, if_missing=None)