From 56a05394b36bfa1788881110c8a43a4a2b9d0fe9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Bernardi?= Date: Thu, 26 Nov 2020 09:38:57 -0300 Subject: [PATCH] lims_diagnosis: check for valid diagnosis states --- lims_diagnosis/locale/es.po | 8 ++++++++ lims_diagnosis/message.xml | 3 +++ lims_diagnosis/results_report.py | 13 +++++++++++++ 3 files changed, 24 insertions(+) diff --git a/lims_diagnosis/locale/es.po b/lims_diagnosis/locale/es.po index 95f1640c..f1d6f235 100644 --- a/lims_diagnosis/locale/es.po +++ b/lims_diagnosis/locale/es.po @@ -268,6 +268,10 @@ msgctxt "model:ir.message,text:lbl_line_acceptance" msgid "Notebook Line Acceptance" msgstr "Aceptación de Línea de cuaderno" +msgctxt "model:ir.message,text:msg_invalid_diagnosis_state" +msgid "Missing diagnosis states" +msgstr "Faltan estados de diagnóstico" + msgctxt "model:ir.ui.menu,name:lims_open_samples_comparator_menu" msgid "Samples Comparator" msgstr "Comparador de muestras" @@ -288,6 +292,10 @@ msgctxt "model:lims.diagnosis.state,name:" msgid "Diagnosis State" msgstr "Estado de Diagnóstico" +msgctxt "model:lims.diagnosis.state.image,name:" +msgid "Diagnosis State Image" +msgstr "Imagen de Estado de diagnóstico" + msgctxt "model:lims.diagnosis.template,name:" msgid "Diagnosis Template" msgstr "Plantilla de Diagnóstico" diff --git a/lims_diagnosis/message.xml b/lims_diagnosis/message.xml index bf1b8599..4a108aed 100644 --- a/lims_diagnosis/message.xml +++ b/lims_diagnosis/message.xml @@ -4,5 +4,8 @@ Notebook Line Acceptance + + Missing diagnosis states + diff --git a/lims_diagnosis/results_report.py b/lims_diagnosis/results_report.py index af3a9a3d..c2ec3f1a 100644 --- a/lims_diagnosis/results_report.py +++ b/lims_diagnosis/results_report.py @@ -8,6 +8,7 @@ from trytond.wizard import Wizard, StateTransition, StateView, StateAction, \ from trytond.pool import Pool, PoolMeta from trytond.pyson import Eval, Not, Bool from trytond.transaction import Transaction +from trytond.exceptions import UserError from trytond.i18n import gettext @@ -37,8 +38,20 @@ class ResultsReportVersionDetail(metaclass=PoolMeta): @classmethod @ModelView.button def diagnose(cls, details): + cls.check_diagnosis_states(details) cls.write(details, {'state': 'diagnosed'}) + @classmethod + def check_diagnosis_states(cls, details): + for detail in details: + for sample in detail.samples: + if not sample.diagnosis_states: + continue + for state in sample.diagnosis_states.values(): + if state == '*': + raise UserError(gettext( + 'lims_diagnosis.msg_invalid_diagnosis_state')) + @fields.depends('template', '_parent_template.diagnosis_template', methods=['on_change_diagnosis_template']) def on_change_template(self):