lims: results report: add domain for range origins

This commit is contained in:
Adrián Bernardi 2021-12-09 18:57:39 -03:00
parent 4866d1b48c
commit 196531f2cb
2 changed files with 32 additions and 2 deletions

View File

@ -5060,6 +5060,10 @@ msgctxt "field:lims.results_report.version.detail,resultrange_origin:"
msgid "Origin"
msgstr "Origen"
msgctxt "field:lims.results_report.version.detail,resultrange_origin_domain:"
msgid "Origin domain"
msgstr "Dominio para Origen"
msgctxt "field:lims.results_report.version.detail,review_reason:"
msgid "Review reason"
msgstr "Motivo de revisión"

View File

@ -593,8 +593,9 @@ class ResultsReportVersionDetail(Workflow, ModelSQL, ModelView):
'lims.laboratory.professional', None, None, 'Signer domain'),
'on_change_with_signer_domain')
resultrange_origin = fields.Many2One('lims.range.type', 'Origin',
domain=[('use', '=', 'result_range')],
depends=['report_result_type', 'state'],
domain=['OR', ('id', '=', Eval('resultrange_origin')),
('id', 'in', Eval('resultrange_origin_domain'))],
depends=['resultrange_origin_domain', 'report_result_type', 'state'],
states={
'invisible': Not(Eval('report_result_type').in_([
'result_range', 'both_range'])),
@ -602,6 +603,9 @@ class ResultsReportVersionDetail(Workflow, ModelSQL, ModelView):
'result_range', 'both_range']),
'readonly': Eval('state') != 'draft',
})
resultrange_origin_domain = fields.Function(fields.Many2Many(
'lims.range.type', None, None, 'Origin domain'),
'on_change_with_resultrange_origin_domain')
comments = fields.Text('Comments', translate=True, depends=_depends,
states={'readonly': ~Eval('state').in_(['draft', 'revised'])})
fractions_comments = fields.Function(fields.Text('Fractions comments'),
@ -978,6 +982,28 @@ class ResultsReportVersionDetail(Workflow, ModelSQL, ModelView):
return []
return [p.id for p in professionals]
@fields.depends('samples')
def on_change_with_resultrange_origin_domain(self, name=None):
cursor = Transaction().connection.cursor()
pool = Pool()
Range = pool.get('lims.range')
RangeType = pool.get('lims.range.type')
if not self.samples:
return []
product_type_id = self.samples[0].product_type.id
matrix_id = self.samples[0].matrix.id
cursor.execute('SELECT DISTINCT(rt.id) '
'FROM "' + RangeType._table + '" rt '
'INNER JOIN "' + Range._table + '" r '
'ON rt.id = r.range_type '
'WHERE rt.use = \'result_range\' '
'AND r.product_type = %s '
'AND r.matrix = %s',
(product_type_id, matrix_id))
return [x[0] for x in cursor.fetchall()]
def get_report_language_cached(self, name=None):
cursor = Transaction().connection.cursor()
pool = Pool()