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')
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)