def _kind_changed(self): if self.kind == 'MassSpec': self.exporter = MassSpecExporter() else: self.exporter = XMLExporter()
class ExportTask(AnalysisEditTask, BrowserMixin): id = 'pychron.export' export_analyses = List name = 'Export' append_button = Button replace_button = Button export_button = Button kind = Enum('MassSpec', 'XML') exporter = Instance(Exporter) tool_bars = [SToolBar(ExportAction())] def do_export(self): if self.export_analyses: if self.exporter.start_export(): n = len(self.export_analyses) prog = self.manager.open_progress(n) for ei in self.export_analyses: self._export_analysis(ei, prog) prog.close() def _exporter_default(self): return MassSpecExporter() def _kind_changed(self): if self.kind == 'MassSpec': self.exporter = MassSpecExporter() else: self.exporter = XMLExporter() def _export_analysis(self, ai, prog): # db=self.manager.db # with db.session_ctx(): # dest=self.destination espec = self._make_export_spec(ai) self.exporter.add(espec) prog.change_message('Export analysis {}'.format(ai.record_id)) def _make_export_spec(self, ai): ai = self.manager.make_analysis(ai, use_cache=False) # rs_name, rs_text=assemble_script_blob() rs_name, rs_text = '', '' rid = ai.record_id exp = ExportSpec(runid=rid, runscript_name=rs_name, runscript_text=rs_text, mass_spectrometer=ai.mass_spectrometer.capitalize(), isotopes=ai.isotopes) exp.load_record(ai) return exp def _append_button_fired(self): s = self._get_selected_analyses() if s: self.export_analyses.extend(s) def _replace_button_fired(self): s = self._get_selected_analyses() if s: self.export_analyses = s def create_dock_panes(self): self.browser_pane = BrowserPane(model=self) return [self.browser_pane, DestinationPane(model=self)] def create_central_pane(self): return ExportCentralPane(model=self) def _default_layout_default(self): return TaskLayout(left=Tabbed(PaneItem('pychron.browser'), PaneItem('pychron.export.destination')))