lims: add some indexes to improve performance

This commit is contained in:
Adrián Bernardi 2020-11-27 18:25:45 -03:00
parent f4b516c21d
commit 5dab76a9a8
4 changed files with 25 additions and 20 deletions

View File

@ -783,7 +783,7 @@ class Analysis(Workflow, ModelSQL, ModelView):
__name__ = 'lims.analysis'
_rec_name = 'description'
code = fields.Char('Code', required=True,
code = fields.Char('Code', required=True, select=True,
states={'readonly': Eval('state') != 'draft'}, depends=['state'])
description = fields.Char('Description', required=True, translate=True,
states={'readonly': Bool(Equal(Eval('state'), 'disabled'))},
@ -883,7 +883,7 @@ class Analysis(Workflow, ModelSQL, ModelView):
product = fields.Many2One('product.product', 'Product')
automatic_acquisition = fields.Boolean('Automatic acquisition',
states={'readonly': Bool(Equal(Eval('state'), 'disabled'))},
depends=['state'])
depends=['state'], select=True)
order = fields.Integer('Order', states={
'invisible': Not(And(
Bool(Equal(Eval('type'), 'analysis')),

View File

@ -773,9 +773,10 @@ class NotebookLine(ModelSQL, ModelView):
service = fields.Many2One('lims.service', 'Service', readonly=True,
ondelete='CASCADE', select=True)
analysis = fields.Many2One('lims.analysis', 'Analysis', required=True,
readonly=True)
readonly=True, select=True)
repetition = fields.Integer('Repetition', readonly=True)
start_date = fields.Date('Start date', states={'readonly': True})
start_date = fields.Date('Start date', states={'readonly': True},
select=True)
end_date = fields.Date('End date', states={
'readonly': Or(~Bool(Eval('start_date')), Bool(Eval('accepted'))),
}, depends=['start_date', 'accepted'])
@ -868,12 +869,13 @@ class NotebookLine(ModelSQL, ModelView):
analysis_order = fields.Function(fields.Integer('Order'),
'get_analysis_order')
dilution_factor = fields.Float('Dilution factor')
accepted = fields.Boolean('Accepted')
accepted = fields.Boolean('Accepted', select=True)
acceptance_date = fields.DateTime('Acceptance date',
states={'readonly': True})
not_accepted_message = fields.Text('Message', readonly=True,
states={'invisible': Not(Bool(Eval('not_accepted_message')))})
annulled = fields.Boolean('Annulled', states={'readonly': True})
annulled = fields.Boolean('Annulled', states={'readonly': True},
select=True)
annulment_date = fields.DateTime('Annulment date',
states={'readonly': True})
results_report = fields.Many2One('lims.results_report', 'Results Report',

View File

@ -615,9 +615,10 @@ class PlanificationDetail(ModelSQL, ModelView):
planification = fields.Many2One('lims.planification', 'Planification',
ondelete='CASCADE', select=True, required=True)
fraction = fields.Many2One('lims.fraction', 'Fraction', required=True)
fraction = fields.Many2One('lims.fraction', 'Fraction', required=True,
select=True)
service_analysis = fields.Many2One('lims.analysis', 'Service',
required=True)
required=True, select=True)
fraction_type = fields.Function(fields.Many2One('lims.fraction.type',
'Fraction type'), 'get_fraction_field',
searcher='search_fraction_field')
@ -731,8 +732,8 @@ class PlanificationServiceDetail(ModelSQL, ModelView):
staff_responsible = fields.Many2Many(
'lims.planification.service_detail-laboratory.professional', 'detail',
'professional', 'Laboratory professionals')
is_control = fields.Boolean('Is Control')
is_replanned = fields.Boolean('Is Replanned')
is_control = fields.Boolean('Is Control', select=True)
is_replanned = fields.Boolean('Is Replanned', select=True)
planned_service = fields.Many2One('lims.analysis', 'Planned service')
repetition = fields.Function(fields.Integer('Repetition'),
'get_repetition')
@ -859,8 +860,9 @@ class LabProfessionalMethod(ModelSQL, ModelView):
__name__ = 'lims.lab.professional.method'
professional = fields.Many2One('lims.laboratory.professional',
'Professional', required=True)
method = fields.Many2One('lims.lab.method', 'Method', required=True)
'Professional', required=True, select=True)
method = fields.Many2One('lims.lab.method', 'Method', required=True,
select=True)
state = fields.Selection([
('training', 'Training'),
('qualified', 'Qualified'),
@ -869,7 +871,7 @@ class LabProfessionalMethod(ModelSQL, ModelView):
type = fields.Selection([
('preparation', 'Preparation'),
('analytical', 'Analytical'),
], 'Type', sort=False)
], 'Type', sort=False, select=True)
requalification_history = fields.One2Many(
'lims.lab.professional.method.requalification', 'professional_method',
'Trainings/Qualifications/Requalifications')

View File

@ -354,13 +354,14 @@ class NotebookLoadResultsFile(Wizard):
('converted_result_modifier', 'not in',
['d', 'nd', 'pos', 'neg', 'ni', 'abs', 'pre']),
]
line = NotebookLine.search(clause)
if line:
data = raw_results[f[1]][analysis][rep]
res = self.get_results(line[0], data)
if res:
NotebookLine.write([line[0]], res)
lines.append(line[0])
line = NotebookLine.search(clause, limit=1)
if not line:
continue
data = raw_results[f[1]][analysis][rep]
res = self.get_results(line[0], data)
if res:
NotebookLine.write([line[0]], res)
lines.append(line[0])
if lines:
self.result.result_lines = [l.id for l in lines]