lims_analysis_sheet: add support for . expressions in default values

This commit is contained in:
Sebastián Marró 2020-05-12 11:04:10 -03:00
parent bd8cd54747
commit f570b02300
2 changed files with 18 additions and 0 deletions

View File

@ -598,6 +598,8 @@ class AnalysisSheet(Workflow, ModelSQL, ModelView):
for k in list(schema.keys()):
if schema[k]['is_fixed_value']:
value = schema[k]['fixed_value']
if '.' in value:
continue
if schema[k]['type'] == 'boolean':
fixed_values[k] = bool(value)
elif schema[k]['type'] == 'date':
@ -615,6 +617,20 @@ class AnalysisSheet(Workflow, ModelSQL, ModelView):
for nl in lines:
line = {'compilation': self.compilation.id}
line.update(fixed_values)
for k in list(schema.keys()):
if (schema[k]['is_fixed_value'] and '.' in schema[k][
'fixed_value']):
path = schema[k]['fixed_value'].split('.')
field = path.pop(0)
try:
value = getattr(nl, field)
while path:
field = path.pop(0)
value = getattr(value, field)
except AttributeError:
value = None
line[k] = value
line['notebook_line'] = nl.id
if interface.analysis_field:
if interface.analysis_field.type_ == 'many2one':

View File

@ -121,6 +121,8 @@ def str2date(value, lang=None):
def get_model_resource(model_name, value, field_name):
if '.' in value:
return None
Model = Pool().get(model_name)
rec_name = Model._rec_name
if rec_name not in Model._fields: