From ef2c4e39a24ccc64e684129f9b8bb11757fb2d3e Mon Sep 17 00:00:00 2001 From: Ramon Bartl Date: Fri, 3 Mar 2023 11:11:31 +0100 Subject: [PATCH 1/6] Upgrade step --- src/senaite/core/profiles/default/metadata.xml | 2 +- src/senaite/core/upgrade/v02_04_000.zcml | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/senaite/core/profiles/default/metadata.xml b/src/senaite/core/profiles/default/metadata.xml index af18eb68da..f3930d67df 100644 --- a/src/senaite/core/profiles/default/metadata.xml +++ b/src/senaite/core/profiles/default/metadata.xml @@ -1,6 +1,6 @@ - 2422 + 2423 profile-Products.ATContentTypes:base profile-Products.CMFEditions:CMFEditions diff --git a/src/senaite/core/upgrade/v02_04_000.zcml b/src/senaite/core/upgrade/v02_04_000.zcml index 0733a32610..8c5bef5c16 100644 --- a/src/senaite/core/upgrade/v02_04_000.zcml +++ b/src/senaite/core/upgrade/v02_04_000.zcml @@ -202,4 +202,12 @@ handler="senaite.core.upgrade.v02_04_000.import_registry" profile="senaite.core:default"/> + + From 3434f4f611c0de1816da70c46915cb4726294120 Mon Sep 17 00:00:00 2001 From: Ramon Bartl Date: Fri, 3 Mar 2023 11:11:53 +0100 Subject: [PATCH 2/6] Added registry panel for worksheets view --- .../core/profiles/default/registry.xml | 3 ++ src/senaite/core/registry/schema.py | 40 ++++++++++++++++++- 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/src/senaite/core/profiles/default/registry.xml b/src/senaite/core/profiles/default/registry.xml index 204e4617bf..b859d4fd83 100644 --- a/src/senaite/core/profiles/default/registry.xml +++ b/src/senaite/core/profiles/default/registry.xml @@ -4,6 +4,9 @@ + + + diff --git a/src/senaite/core/registry/schema.py b/src/senaite/core/registry/schema.py index 120be41b6e..ad938b5a69 100644 --- a/src/senaite/core/registry/schema.py +++ b/src/senaite/core/registry/schema.py @@ -10,13 +10,49 @@ class ISenaiteRegistry(model.Schema): """ +class IWorksheetViewRegistry(ISenaiteRegistry): + """View settings for worksheets + """ + model.fieldset( + "worksheet_view", + label=_(u"Worksheet View"), + description=_("Worksheet view configuration"), + fields=[ + "worksheetview_analysis_columns_order", + ], + ) + + worksheetview_analysis_columns_order = schema.List( + title=_(u"Analysis columns order"), + description=_( + u"Default column order for worksheet analysis listings" + ), + value_type=schema.ASCIILine(title=u"Column"), + required=False, + default=[ + "Pos", + "Service", + "DetectionLimitOperand", + "Result", + "Uncertainty", + "Specification", + "retested", + "Method", + "Instrument", + "Attachments", + "DueDate", + "state_title", + ] + ) + + class ISampleViewRegistry(ISenaiteRegistry): - """Registry settings for sample settings + """View settings for samples """ model.fieldset( "sample_view", label=_(u"Sample View"), - description=_("Configuration for the sample view"), + description=_("Sample view configuration"), fields=[ "sampleview_collapse_field_analysis_table", "sampleview_collapse_lab_analysis_table", From b179e6bfabe0d0bd5bbd3156d74b7726f5b9b36c Mon Sep 17 00:00:00 2001 From: Ramon Bartl Date: Fri, 3 Mar 2023 11:12:33 +0100 Subject: [PATCH 3/6] Changed default columns order --- .../lims/browser/worksheet/views/analyses.py | 55 +++++++++++++------ 1 file changed, 38 insertions(+), 17 deletions(-) diff --git a/src/bika/lims/browser/worksheet/views/analyses.py b/src/bika/lims/browser/worksheet/views/analyses.py index e21e543b14..a42e646f80 100644 --- a/src/bika/lims/browser/worksheet/views/analyses.py +++ b/src/bika/lims/browser/worksheet/views/analyses.py @@ -35,6 +35,7 @@ from bika.lims.utils import to_int from plone.memoize import view from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile +from senaite.core.registry import get_registry_record class AnalysesView(BaseView): @@ -76,15 +77,6 @@ def __init__(self, context, request): ("Service", { "sortable": False, "title": _("Analysis")}), - ("Method", { - "sortable": False, - "ajax": True, - "on_change": "_on_method_change", - "title": _("Method")}), - ("Instrument", { - "sortable": False, - "ajax": True, - "title": _("Instrument")}), ("DetectionLimitOperand", { "title": _("DL"), "sortable": False, @@ -95,25 +87,34 @@ def __init__(self, context, request): "title": _("Result"), "ajax": True, "sortable": False}), + ("Uncertainty", { + "sortable": False, + "title": _("+-")}), + ("Specification", { + "title": _("Specification"), + "sortable": False}), ("retested", { "title": get_image("retested.png", title=t(_("Retested"))), "toggle": False, "type": "boolean"}), - ("Specification", { - "title": _("Specification"), - "sortable": False}), - ("Uncertainty", { + ("Method", { "sortable": False, - "title": _("+-")}), + "ajax": True, + "on_change": "_on_method_change", + "title": _("Method")}), + ("Instrument", { + "sortable": False, + "ajax": True, + "title": _("Instrument")}), + ("Attachments", { + "sortable": False, + "title": _("Attachments")}), ("DueDate", { "sortable": False, "title": _("Due Date")}), ("state_title", { "sortable": False, "title": _("State")}), - ("Attachments", { - "sortable": False, - "title": _("Attachments")}), )) # Inject Remarks column for listing @@ -151,6 +152,10 @@ def __init__(self, context, request): }, ] + def update(self): + super(AnalysesView, self).update() + self.reorder_analysis_columns() + def before_render(self): super(AnalysesView, self).before_render() @@ -158,6 +163,22 @@ def before_render(self): for state in self.review_states: state["custom_transitions"] = [self.set_analysis_remarks_modal] + @view.memoize + def get_default_columns_order(self): + """Return the default column order from the registry + + :returns: List of column keys + """ + name = "worksheetview_analysis_columns_order" + columns_order = get_registry_record(name, default=[]) + # Always put `Pos` column first + try: + columns_order.remove("Pos") + except ValueError: + pass + columns_order.insert(0, "Pos") + return columns_order + def show_analysis_remarks_transition(self): """Check if the analysis remarks transitions should be rendered From cef1f9cf05f2a892cb8b107f23474db5b1581786 Mon Sep 17 00:00:00 2001 From: Ramon Bartl Date: Fri, 3 Mar 2023 11:17:31 +0100 Subject: [PATCH 4/6] Changelog updated --- CHANGES.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.rst b/CHANGES.rst index d2e114a46e..c9dfc26516 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -4,6 +4,7 @@ Changelog 2.4.0 (unreleased) ------------------ +- #2266 Change worksheet analysis column order for better results capturing - #2265 Change sample analysis column order for better results capturing - #2264 Collapsible analyses listings in sample view - #2262 Simplify attachment render in report options to single checkbox From a1bbaabe910a0b867d208b83473adb0b499535da Mon Sep 17 00:00:00 2001 From: Ramon Bartl Date: Fri, 3 Mar 2023 11:19:45 +0100 Subject: [PATCH 5/6] Removed memoize --- src/bika/lims/browser/worksheet/views/analyses.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/bika/lims/browser/worksheet/views/analyses.py b/src/bika/lims/browser/worksheet/views/analyses.py index a42e646f80..36dc6c35e0 100644 --- a/src/bika/lims/browser/worksheet/views/analyses.py +++ b/src/bika/lims/browser/worksheet/views/analyses.py @@ -163,7 +163,6 @@ def before_render(self): for state in self.review_states: state["custom_transitions"] = [self.set_analysis_remarks_modal] - @view.memoize def get_default_columns_order(self): """Return the default column order from the registry From 484da5172582c7199e4a36ca799e19b453c1e852 Mon Sep 17 00:00:00 2001 From: Ramon Bartl Date: Fri, 3 Mar 2023 11:22:09 +0100 Subject: [PATCH 6/6] Fix empty columns_order --- src/bika/lims/browser/analyses/view.py | 3 ++- src/bika/lims/browser/worksheet/views/analyses.py | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/bika/lims/browser/analyses/view.py b/src/bika/lims/browser/analyses/view.py index a93c54a2c6..83101388a2 100644 --- a/src/bika/lims/browser/analyses/view.py +++ b/src/bika/lims/browser/analyses/view.py @@ -263,7 +263,8 @@ def get_default_columns_order(self): :returns: List of column keys """ name = "sampleview_analysis_columns_order" - return get_registry_record(name, default=[]) + columns_order = get_registry_record(name, default=[]) or [] + return columns_order def reorder_analysis_columns(self): """Reorder analysis columns based on registry configuration diff --git a/src/bika/lims/browser/worksheet/views/analyses.py b/src/bika/lims/browser/worksheet/views/analyses.py index 36dc6c35e0..3f7a560335 100644 --- a/src/bika/lims/browser/worksheet/views/analyses.py +++ b/src/bika/lims/browser/worksheet/views/analyses.py @@ -163,13 +163,14 @@ def before_render(self): for state in self.review_states: state["custom_transitions"] = [self.set_analysis_remarks_modal] + @view.memoize def get_default_columns_order(self): """Return the default column order from the registry :returns: List of column keys """ name = "worksheetview_analysis_columns_order" - columns_order = get_registry_record(name, default=[]) + columns_order = get_registry_record(name, default=[]) or [] # Always put `Pos` column first try: columns_order.remove("Pos")