From 0114f024a7aa69d341ab2a93ee24a5fb02f9d5f3 Mon Sep 17 00:00:00 2001 From: Ramon Bartl Date: Wed, 14 Aug 2019 08:26:40 +0200 Subject: [PATCH 1/6] Give hidden fields from registry always precedence --- bika/lims/adapters/widgetvisibility.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bika/lims/adapters/widgetvisibility.py b/bika/lims/adapters/widgetvisibility.py index 6c4f97cd96..966c4d0e93 100644 --- a/bika/lims/adapters/widgetvisibility.py +++ b/bika/lims/adapters/widgetvisibility.py @@ -172,7 +172,7 @@ class RegistryHiddenFieldsVisibility(SenaiteATWidgetVisibility): def __init__(self, context): field_names = getHiddenAttributesForClass(context.portal_type) super(RegistryHiddenFieldsVisibility, self).__init__( - context=context, sort=-1, field_names=[field_names,]) + context=context, sort=float("inf"), field_names=[field_names, ]) def isVisible(self, field, mode="view", default="visible"): return "invisible" From 729ffeb812e43844cc8cb037aa67f876c5281f7a Mon Sep 17 00:00:00 2001 From: Ramon Bartl Date: Wed, 14 Aug 2019 08:28:01 +0200 Subject: [PATCH 2/6] Remove conditional break in `for` loop -> The first matching adapter always wins with its visibility value --- bika/lims/monkey/Widget.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/bika/lims/monkey/Widget.py b/bika/lims/monkey/Widget.py index 3c11b09b57..1312d1624e 100644 --- a/bika/lims/monkey/Widget.py +++ b/bika/lims/monkey/Widget.py @@ -77,8 +77,6 @@ def isVisible(self, instance, mode='view', default="visible", field=None): logger.info("IATWidgetVisibility rule {} for {}.{} ({}): {} -> {}" .format(adapter_name, instance.id, field.getName(), mode, state, adapter_state)) - if adapter_state == state: - continue return adapter_state return state From c9dc12b8480f29a327d5f560a678971e9817b197 Mon Sep 17 00:00:00 2001 From: Ramon Bartl Date: Wed, 14 Aug 2019 08:28:52 +0200 Subject: [PATCH 3/6] Include sortkey in logging --- bika/lims/monkey/Widget.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/bika/lims/monkey/Widget.py b/bika/lims/monkey/Widget.py index 1312d1624e..1f56e4099c 100644 --- a/bika/lims/monkey/Widget.py +++ b/bika/lims/monkey/Widget.py @@ -74,9 +74,10 @@ def isVisible(self, instance, mode='view', default="visible", field=None): continue adapter_state = adapter(instance, mode, field, state) adapter_name = adapter.__class__.__name__ - logger.info("IATWidgetVisibility rule {} for {}.{} ({}): {} -> {}" - .format(adapter_name, instance.id, field.getName(), mode, state, - adapter_state)) + logger.info( + "IATWidgetVisibility Adapter <{} sort:{}> for {}.{} ({}): {} -> {}" + .format(adapter_name, adapter.sort, instance.id, field.getName(), + mode, state, adapter_state)) return adapter_state return state From 59f688a2b17776b53b1395046c8c0517663acde7 Mon Sep 17 00:00:00 2001 From: Ramon Bartl Date: Wed, 14 Aug 2019 08:42:03 +0200 Subject: [PATCH 4/6] Better log --- bika/lims/monkey/Widget.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bika/lims/monkey/Widget.py b/bika/lims/monkey/Widget.py index 1f56e4099c..31e7c5b695 100644 --- a/bika/lims/monkey/Widget.py +++ b/bika/lims/monkey/Widget.py @@ -75,9 +75,9 @@ def isVisible(self, instance, mode='view', default="visible", field=None): adapter_state = adapter(instance, mode, field, state) adapter_name = adapter.__class__.__name__ logger.info( - "IATWidgetVisibility Adapter <{} sort:{}> for {}.{} ({}): {} -> {}" - .format(adapter_name, adapter.sort, instance.id, field.getName(), - mode, state, adapter_state)) + "IATWidgetVisibility: <{} for {}.{} mode:{} sort:{}> {} -> {}" + .format(adapter_name, instance.id, field.getName(), mode, + adapter.sort, state, adapter_state)) return adapter_state return state From 2bb1515fbeefdbe21d820baa63c047a77039a264 Mon Sep 17 00:00:00 2001 From: Ramon Bartl Date: Wed, 14 Aug 2019 08:42:39 +0200 Subject: [PATCH 5/6] Changelog updated --- CHANGES.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.rst b/CHANGES.rst index d911f79175..4b1934be4e 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -22,6 +22,7 @@ Changelog **Fixed** +- #1425 Fix adapter priority for widget visibility - #1421 Fix Search Query for Batches Listing - #1418 Subscriber adapters not supported in clients listing - #1419 Mixed permissions for transitions in client workflow From 168b8ee2b5ef89cc9f1f59c3679d48ace858fe4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jordi=20Puiggen=C3=A9?= Date: Wed, 14 Aug 2019 17:39:09 +0200 Subject: [PATCH 6/6] Fix inconsistency --- bika/lims/adapters/widgetvisibility.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/bika/lims/adapters/widgetvisibility.py b/bika/lims/adapters/widgetvisibility.py index 966c4d0e93..4e899ac211 100644 --- a/bika/lims/adapters/widgetvisibility.py +++ b/bika/lims/adapters/widgetvisibility.py @@ -219,7 +219,7 @@ class SecondaryDateSampledFieldVisibility(SenaiteATWidgetVisibility): """ def __init__(self, context): super(SecondaryDateSampledFieldVisibility, self).__init__( - context=context, sort=3, field_names=["DateSampled"]) + context=context, sort=20, field_names=["DateSampled"]) def isVisible(self, field, mode="view", default="visible"): """Returns whether the field is visible in a given mode @@ -230,7 +230,10 @@ def isVisible(self, field, mode="view", default="visible"): # If this is a Secondary Analysis Request, this field is not editable if IAnalysisRequestSecondary.providedBy(self.context): return "invisible" - return default + + # Delegate to SamplingFieldsVisibility adapter + return SamplingFieldsVisibility(self.context).isVisible( + field, mode=mode, default=default) class PrimaryAnalysisRequestFieldVisibility(SenaiteATWidgetVisibility):