def __init__(self): self.session_manager = SessionManager('postgresql://*****:*****@applsens.sensor.lab:5432/unimeas') super(SQLPanel, self).__init__()
class SQLPanel(HasTraits): ############ Panel Interface ###########################3 pane_name = Str('Save Configuration') pane_id = Str('sensorscience.unimeas.sql_pane_interval') # database_wrapper = Instance(SQLWrapper) # instrument = Instance(IInstrument) selected_user = Str save_instrument_config = Button measurement_name = Str measurement_description = Str save_in_database = Bool(False) session_manager = Instance(SessionManager) active_instrument = Instance(IInstrument) running = Bool available_users = List(Unicode) available_measurements = List(Unicode) traits_view = View(VGroup(HGroup(Item('save_in_database', enabled_when = 'not running'), Item('selected_user', editor=EnumEditor(name='available_users'), enabled_when = 'True'), spring, Item('save_instrument_config', show_label=False, enabled_when = 'active_instruments is not None')), Item('measurement_name', editor=EnumEditor(name='available_measurements'), enabled_when = 'not running and save_in_database'), Item('measurement_description', style = 'custom'))) def __init__(self): self.session_manager = SessionManager('postgresql://*****:*****@applsens.sensor.lab:5432/unimeas') super(SQLPanel, self).__init__() def _save_instrument_config_fired(self): popup = CreateMeasurementPopup() ui = popup.edit_traits() if ui.result is True: self.session_manager.add_measurement_class(popup.class_name, pickle.dumps(self.active_instrument).encode('zip').encode('base64').strip(), self.active_instrument.get_nr_of_samples(), popup.class_description, 'INTERVAL') # self.is_new = True # self.available_measurements.append(popup.measurement_name) # self.measurement_name = popup.measurement_name # self.measurement_description = popup.measurement_description # self.database_wrapper.set_table(self.measurement_name, # self.measurement_description) def _available_users_default(self): l = [u.ifmid for u in self.session_manager.get_users()] return l def _measurement_name_default(self): return '' def _measurement_name_changed(self, new): if hasattr(self, 'is_new'): if not self.is_new: self.measurement_description = self.database_wrapper.get_description(new) else: self.is_new = False else: self.measurement_description = self.database_wrapper.get_description(new) self.database_wrapper.set_table(new, self.measurement_description) # @on_trait_change('instrument.sample_number') def add_data(self, data): self.measurement_session.add_data(data.update({'sample_nr': self.active_instrument.sample_nr})) def start_stop(self, active_instrument): self.running = active_instrument.running if self.running and self.save_in_database: if self.measurement_session is None: self.measurement_session = self.session_manager.create_session(name='some name', instrument='some isnstr.', user=self.selected_user, description='some desc', sensor_id='sensor ID', gasmixer_system='GM2', measurement_class_id=2) self.measurement_session.new_run([self.active_instrument.x_units[0], self.active_instrument.y_units[0]]) def set_active_instrument(self, instrument): self.active_instrument = instrument self.available_classes = self.session_manager.get_measurement_classes()