lims_diagnosis: check for valid diagnosis states

This commit is contained in:
Adrián Bernardi 2020-11-26 09:38:57 -03:00
parent 7c3ebad715
commit 56a05394b3
3 changed files with 24 additions and 0 deletions

View File

@ -268,6 +268,10 @@ msgctxt "model:ir.message,text:lbl_line_acceptance"
msgid "Notebook Line Acceptance" msgid "Notebook Line Acceptance"
msgstr "Aceptación de Línea de cuaderno" 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" msgctxt "model:ir.ui.menu,name:lims_open_samples_comparator_menu"
msgid "Samples Comparator" msgid "Samples Comparator"
msgstr "Comparador de muestras" msgstr "Comparador de muestras"
@ -288,6 +292,10 @@ msgctxt "model:lims.diagnosis.state,name:"
msgid "Diagnosis State" msgid "Diagnosis State"
msgstr "Estado de Diagnóstico" 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:" msgctxt "model:lims.diagnosis.template,name:"
msgid "Diagnosis Template" msgid "Diagnosis Template"
msgstr "Plantilla de Diagnóstico" msgstr "Plantilla de Diagnóstico"

View File

@ -4,5 +4,8 @@
<record model="ir.message" id="lbl_line_acceptance"> <record model="ir.message" id="lbl_line_acceptance">
<field name="text">Notebook Line Acceptance</field> <field name="text">Notebook Line Acceptance</field>
</record> </record>
<record model="ir.message" id="msg_invalid_diagnosis_state">
<field name="text">Missing diagnosis states</field>
</record>
</data> </data>
</tryton> </tryton>

View File

@ -8,6 +8,7 @@ from trytond.wizard import Wizard, StateTransition, StateView, StateAction, \
from trytond.pool import Pool, PoolMeta from trytond.pool import Pool, PoolMeta
from trytond.pyson import Eval, Not, Bool from trytond.pyson import Eval, Not, Bool
from trytond.transaction import Transaction from trytond.transaction import Transaction
from trytond.exceptions import UserError
from trytond.i18n import gettext from trytond.i18n import gettext
@ -37,8 +38,20 @@ class ResultsReportVersionDetail(metaclass=PoolMeta):
@classmethod @classmethod
@ModelView.button @ModelView.button
def diagnose(cls, details): def diagnose(cls, details):
cls.check_diagnosis_states(details)
cls.write(details, {'state': 'diagnosed'}) 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', @fields.depends('template', '_parent_template.diagnosis_template',
methods=['on_change_diagnosis_template']) methods=['on_change_diagnosis_template'])
def on_change_template(self): def on_change_template(self):