From dc2a5b406b87cfe16372d3ee11d96b1232b3df99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Bernardi?= Date: Tue, 9 Aug 2022 18:48:52 -0300 Subject: [PATCH] lims, lims_instrument: add field "Trace report" to Notebook lines and Results reports --- lims/locale/es.po | 16 ++++++++++++++++ lims/notebook.py | 3 +++ lims/results_report.py | 17 +++++++++++++++++ lims/view/notebook_line_all_form.xml | 2 ++ lims/view/notebook_line_all_list.xml | 1 + lims/view/notebook_line_form.xml | 2 ++ lims/view/notebook_line_list.xml | 1 + .../view/results_report_version_detail_form.xml | 2 ++ .../results_report_version_detail_line_list.xml | 1 + .../view/results_report_version_detail_list.xml | 1 + lims_instrument/locale/es.po | 4 ++++ lims_instrument/resultsimport.py | 8 ++++++++ ...book_load_results_file_result_lines_list.xml | 1 + 13 files changed, 59 insertions(+) diff --git a/lims/locale/es.po b/lims/locale/es.po index d91f490..79a3afc 100644 --- a/lims/locale/es.po +++ b/lims/locale/es.po @@ -3119,6 +3119,10 @@ msgctxt "field:lims.notebook.line,theoretical_concentration:" msgid "Theoretical concentration" msgstr "Concentración teórica" +msgctxt "field:lims.notebook.line,trace_report:" +msgid "Trace report" +msgstr "Traza" + msgctxt "field:lims.notebook.line,uncertainty:" msgid "Uncertainty" msgstr "Incertidumbre" @@ -3411,6 +3415,10 @@ msgctxt "field:lims.notebook.line.all_fields,theoretical_concentration:" msgid "Theoretical concentration" msgstr "Concentración teórica" +msgctxt "field:lims.notebook.line.all_fields,trace_report:" +msgid "Trace report" +msgstr "Traza" + msgctxt "field:lims.notebook.line.all_fields,uncertainty:" msgid "Uncertainty" msgstr "Incertidumbre" @@ -5306,6 +5314,10 @@ msgctxt "field:lims.results_report.version.detail,state:" msgid "State" msgstr "Estado" +msgctxt "field:lims.results_report.version.detail,trace_report:" +msgid "Trace report" +msgstr "Informar traza" + msgctxt "field:lims.results_report.version.detail,type:" msgid "Type" msgstr "Tipo" @@ -5398,6 +5410,10 @@ msgctxt "field:lims.results_report.version.detail.line,start_date:" msgid "Start date" msgstr "Fecha de inicio" +msgctxt "field:lims.results_report.version.detail.line,trace_report:" +msgid "Trace report" +msgstr "Traza" + msgctxt "field:lims.results_report.version.detail.line,uncertainty:" msgid "Uncertainty" msgstr "Incertidumbre" diff --git a/lims/notebook.py b/lims/notebook.py index 1509b47..b9ac390 100644 --- a/lims/notebook.py +++ b/lims/notebook.py @@ -1007,6 +1007,7 @@ class NotebookLine(ModelSQL, ModelView): readonly=True) exceptional_load_uid = fields.Many2One('res.user', 'Exceptional loading of results User', readonly=True) + trace_report = fields.Boolean('Trace report') del _states, _depends @@ -1812,6 +1813,7 @@ class NotebookLineAllFields(ModelSQL, ModelView): readonly=True) exceptional_load_uid = fields.Many2One('res.user', 'Exceptional loading of results User', readonly=True) + trace_report = fields.Boolean('Trace report', readonly=True) @classmethod def __setup__(cls): @@ -1913,6 +1915,7 @@ class NotebookLineAllFields(ModelSQL, ModelView): line.repetition_reason, line.exceptional_load, line.exceptional_load_uid, + line.trace_report, ] where = Literal(True) return join6.select(*columns, where=where) diff --git a/lims/results_report.py b/lims/results_report.py index 6999b63..319624e 100644 --- a/lims/results_report.py +++ b/lims/results_report.py @@ -679,6 +679,7 @@ class ResultsReportVersionDetail(Workflow, ModelSQL, ModelView): 'get_samples_list', searcher='search_samples_list') entry_summary = fields.Function(fields.Char('Entry / Qty. Samples'), 'get_entry_summary', searcher='search_entry_summary') + trace_report = fields.Boolean('Trace report') # State changes revision_uid = fields.Many2One('res.user', 'Revision user', readonly=True) @@ -1563,11 +1564,21 @@ class ResultsReportVersionDetail(Workflow, ModelSQL, ModelView): @classmethod def _get_fields_from_samples(cls, samples, generate_report_form=None): + pool = Pool() + Notebook = pool.get('lims.notebook') + detail_default = {} if len(samples) > 1: detail_default['report_type_forced'] = 'polisample' else: detail_default['report_type_forced'] = 'normal' + + detail_default['trace_report'] = False + for sample in samples: + nb = Notebook(sample['notebook']) + if nb.fraction.sample.trace_report: + detail_default['trace_report'] = True + return detail_default @classmethod @@ -1909,6 +1920,8 @@ class ResultsReportVersionDetailLine(ModelSQL, ModelView): reference = fields.Function(fields.Char('Reference'), 'get_reference') comments = fields.Function(fields.Text('Entry comments'), 'get_nline_field') + trace_report = fields.Function(fields.Boolean('Trace report'), + 'get_nline_field') @classmethod def __register__(cls, module_name): @@ -1965,6 +1978,10 @@ class ResultsReportVersionDetailLine(ModelSQL, ModelView): result[name][d.id] = field.id if field else None else: result[name][d.id] = None + elif cls._fields[name]._type == 'boolean': + for d in details: + result[name][d.id] = (d.notebook_line and + getattr(d.notebook_line, name, False) or False) else: for d in details: result[name][d.id] = (d.notebook_line and diff --git a/lims/view/notebook_line_all_form.xml b/lims/view/notebook_line_all_form.xml index 61cb1dd..6191632 100644 --- a/lims/view/notebook_line_all_form.xml +++ b/lims/view/notebook_line_all_form.xml @@ -128,4 +128,6 @@