lims: service: check for duplication only when modifying the analysis or method

This commit is contained in:
Adrián Bernardi 2022-01-05 19:27:18 -03:00
parent a99fa46d8b
commit 406a8ca1a5

View file

@ -531,17 +531,23 @@ class Service(ModelSQL, ModelView):
super().write(*args) super().write(*args)
actions = iter(args) actions = iter(args)
for services, vals in zip(actions, actions): for services, vals in zip(actions, actions):
check_duplicated = False
for field in ('analysis', 'method'):
if vals.get(field):
check_duplicated = True
break
if check_duplicated:
cls.check_duplicated_analysis([{
'fraction': s.fraction.id,
'analysis': s.analysis.id,
'method': s.method.id,
} for s in services])
change_detail = False change_detail = False
for field in ('analysis', 'laboratory', 'method', 'device'): for field in ('analysis', 'laboratory', 'method', 'device'):
if vals.get(field): if vals.get(field):
change_detail = True change_detail = True
break break
if change_detail: if change_detail:
cls.check_duplicated_analysis([{
'fraction': s.fraction.id,
'analysis': s.analysis.id,
'method': s.method.id,
} for s in services])
cls.update_analysis_detail(services) cls.update_analysis_detail(services)
fractions_ids = list(set(s.fraction.id for s in services)) fractions_ids = list(set(s.fraction.id for s in services))
cls.set_shared_fraction(fractions_ids) cls.set_shared_fraction(fractions_ids)