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 diff --git a/bika/lims/adapters/widgetvisibility.py b/bika/lims/adapters/widgetvisibility.py index 6c4f97cd96..4e899ac211 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" @@ -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): diff --git a/bika/lims/monkey/Widget.py b/bika/lims/monkey/Widget.py index 3c11b09b57..31e7c5b695 100644 --- a/bika/lims/monkey/Widget.py +++ b/bika/lims/monkey/Widget.py @@ -74,11 +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)) - if adapter_state == state: - continue + logger.info( + "IATWidgetVisibility: <{} for {}.{} mode:{} sort:{}> {} -> {}" + .format(adapter_name, instance.id, field.getName(), mode, + adapter.sort, state, adapter_state)) return adapter_state return state