lims_interface/lims_analysis_sheet: identify notebook lines also by the method (2)

This commit is contained in:
Adrián Bernardi 2021-08-02 16:23:17 -03:00
parent 87c905ff8e
commit ddafeda4c1
1 changed files with 30 additions and 21 deletions

View File

@ -1915,30 +1915,35 @@ class Compilation(Workflow, ModelSQL, ModelView):
pool = Pool()
NotebookLine = pool.get('lims.notebook.line')
if (not self.interface.fraction_field or
not self.interface.analysis_field or
not self.interface.method_field or
not self.interface.repetition_field):
fraction_field = self.interface.fraction_field
analysis_field = self.interface.analysis_field
repetition_field = self.interface.repetition_field
if not fraction_field or not analysis_field or not repetition_field:
return None
fraction_value = line[self.interface.fraction_field.alias]
analysis_value = line[self.interface.analysis_field.alias]
method_value = line[self.interface.method_field.alias]
repetition_value = line[self.interface.repetition_field.alias]
fraction_value = line.get(fraction_field.alias)
analysis_value = line.get(analysis_field.alias)
repetition_value = line.get(repetition_field.alias)
if (fraction_value is None or
analysis_value is None or
method_value is None or
repetition_value is None):
return None
nb_line = NotebookLine.search([
clause = [
('notebook.fraction.number', '=', fraction_value),
('analysis.code', '=', analysis_value.split(' - ')[0]),
('analysis.automatic_acquisition', '=', True),
('method.code', '=', method_value.split(' - ')[0]),
('repetition', '=', repetition_value),
('annulled', '=', False),
])
]
method_field = self.interface.method_field
if method_field:
method_value = line.get(method_field.alias)
if method_value is not None:
clause.append(
('method.code', '=', method_value.split(' - ')[0]))
nb_line = NotebookLine.search(clause)
if nb_line:
return nb_line[0].id
return None
@ -1955,24 +1960,28 @@ class Compilation(Workflow, ModelSQL, ModelView):
sub_clause = [('id', '=', -1)]
fraction_field = self.interface.fraction_field
analysis_field = self.interface.analysis_field
method_field = self.interface.method_field
repetition_field = self.interface.repetition_field
if (fraction_field and analysis_field and method_field and
repetition_field):
fraction_value = line[fraction_field.alias]
analysis_value = line[analysis_field.alias]
method_value = line[method_field.alias]
repetition_value = line[repetition_field.alias]
if fraction_field and analysis_field and repetition_field:
fraction_value = line.get(fraction_field.alias)
analysis_value = line.get(analysis_field.alias)
repetition_value = line.get(repetition_field.alias)
if (fraction_value is not None and
analysis_value is not None and
method_value is not None and
repetition_value is not None):
sub_clause = [
(fraction_field.alias, '=', fraction_value),
(analysis_field.alias, '=', analysis_value),
(method_field.alias, '=', method_value),
(repetition_field.alias, '=', repetition_value),
]
method_field = self.interface.method_field
if method_field:
method_value = line.get(method_field.alias)
if method_value is not None:
sub_clause.append(
(method_field.alias, '=', method_value))
clause.extend(sub_clause)
line = Data.search(clause)
return line and line[0].id or None