From 8c59eb14fd97b5bb7a537f0dd070b4893eea634e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Bernardi?= Date: Fri, 25 Sep 2020 09:49:09 -0300 Subject: [PATCH] lims_instrument: use base object for results importer --- lims_instrument/resultsimport.py | 88 +++++++++++---------- lims_instrument_custom_set/resultsimport.py | 3 - 2 files changed, 48 insertions(+), 43 deletions(-) diff --git a/lims_instrument/resultsimport.py b/lims_instrument/resultsimport.py index fe4583c8..d19d676b 100644 --- a/lims_instrument/resultsimport.py +++ b/lims_instrument/resultsimport.py @@ -30,7 +30,52 @@ class NotebookLine(metaclass=PoolMeta): imported_inj_date = fields.Date('Inject date') -class ResultsImport(ModelSQL, ModelView): +class BaseImport(object): + + controller = None + infile = None + rawresults = {} + mimetype = None + numline = 0 + analysis_code = None + formula = None + header = [] + + def getInputFile(self): + return self.infile + + def setInputFile(self, infile): + self.infile = infile + + def loadController(self): + self.controller = None + + def parse(self, infile): + self.rawresults = {} + if not self.controller: + self.loadController() + try: + return self.controller.parse(self, infile) + except AttributeError: + traceback.print_exc() + raise UserError(gettext('lims_instrument.msg_not_implemented', + function='parse')) + + def exportResults(self): + ''' + This function defines whether the importer + export results to a file at the end of the process. + Default is False + ''' + if not self.controller: + self.loadController() + try: + return self.controller.exportResults(self) + except AttributeError: + return False + + +class ResultsImport(BaseImport, ModelSQL, ModelView): 'Results Import' __name__ = 'lims.resultsimport' _rec_name = 'description' @@ -38,12 +83,6 @@ class ResultsImport(ModelSQL, ModelView): name = fields.Selection([], 'Name', required=True, sort=False, depends=['description']) description = fields.Char('Description', required=True) - controller = None - _infile = None - header = [] - rawresults = {} - mimetype = None - numline = 0 @classmethod def __setup__(cls): @@ -71,35 +110,6 @@ class ResultsImport(ModelSQL, ModelView): raise UserError(gettext('lims_instrument.msg_not_module', module=self.name)) - def getInputFile(self): - return self._infile - - def setInputFile(self, infile): - self._infile = infile - - def parse(self, infile): - if not self.controller: - self.loadController() - try: - return self.controller.parse(self, infile) - except AttributeError: - traceback.print_exc() - raise UserError(gettext('lims_instrument.msg_not_implemented', - function='parse')) - - def exportResults(self): - ''' - This function defines whether the importer - export results to a file at the end of the process. - Default is False - ''' - if not self.controller: - self.loadController() - try: - return self.controller.exportResults(self) - except AttributeError: - return False - class NotebookLoadResultsFileStart(ModelView): 'Load Results from File' @@ -301,7 +311,6 @@ class NotebookLoadResultsFile(Wizard): file_ = getattr(self.start, 'infile_%s' % fline) if not file_: continue - self.start.results_importer.rawresults = {} self.start.results_importer.parse(file_) raw_results = self.start.results_importer.rawresults fractions_numbers = list(raw_results.keys()) @@ -560,9 +569,8 @@ class NotebookLoadResultsFile(Wizard): if warnings: self.warning.msg = messages return 'warning' - else: - if export_results: - return 'end' # 'export' + if export_results: + return 'end' # 'export' return 'end' def transition_cancel(self): diff --git a/lims_instrument_custom_set/resultsimport.py b/lims_instrument_custom_set/resultsimport.py index cc1d58d5..02656fbe 100644 --- a/lims_instrument_custom_set/resultsimport.py +++ b/lims_instrument_custom_set/resultsimport.py @@ -11,9 +11,6 @@ from . import custom_set_xls class ResultsImport(metaclass=PoolMeta): __name__ = 'lims.resultsimport' - analysis_code = None - formula = None - @classmethod def __setup__(cls): super().__setup__()