From b981bf17589d63022e504d777b8abc18347ca1be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jordi=20Puiggen=C3=A9?= Date: Mon, 27 Jan 2020 18:28:09 +0100 Subject: [PATCH 1/2] Do not display partitions for InternalUse to client contacts --- bika/lims/browser/analyses/view.py | 14 ++++++++++++++ bika/lims/browser/viewlets/analysisrequest.py | 15 ++++++++++++--- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/bika/lims/browser/analyses/view.py b/bika/lims/browser/analyses/view.py index 5a81de8420..d47a3687c7 100644 --- a/bika/lims/browser/analyses/view.py +++ b/bika/lims/browser/analyses/view.py @@ -237,6 +237,16 @@ def before_render(self): super(AnalysesView, self).before_render() self.request.set("disable_plone.rightcolumn", 1) + @property + @viewcache.memoize + def show_partitions(self): + """Returns whether the partitions must be displayed or not + """ + if api.get_current_client(): + # Current user is a client contact + return api.get_setup().getShowPartitions() + return True + @viewcache.memoize def analysis_remarks_enabled(self): """Check if analysis remarks are enabled @@ -1183,6 +1193,10 @@ def _folder_item_partition(self, analysis_brain, item): sample_id = analysis_brain.getRequestID if sample_id != api.get_id(self.context): + if not self.show_partitions: + # Do not display the link + return + part_url = analysis_brain.getRequestURL url = get_link(part_url, value=sample_id, **{"class": "small"}) title = item["replace"].get("Service") or item["Service"] diff --git a/bika/lims/browser/viewlets/analysisrequest.py b/bika/lims/browser/viewlets/analysisrequest.py index dbd2afd941..1e4bfd59c3 100644 --- a/bika/lims/browser/viewlets/analysisrequest.py +++ b/bika/lims/browser/viewlets/analysisrequest.py @@ -43,11 +43,20 @@ class PrimaryAnalysisRequestViewlet(ViewletBase): def get_partitions(self): """Returns whether this viewlet is visible or not """ + partitions = [] + # If current user is a client contact, rely on Setup's ShowPartitions - if api.get_current_client(): + client = api.get_current_client() + if client: if not api.get_setup().getShowPartitions(): - return [] - return self.context.getDescendants() + return partitions + + partitions = self.context.getDescendants() + if client: + # Do not display partitions for Internal use + return filter(lambda part: not part.getInternalUse(), partitions) + + return partitions class PartitionAnalysisRequestViewlet(ViewletBase): From d6f4479dfd1267abc69a292cc9cf702427a60678 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jordi=20Puiggen=C3=A9?= Date: Mon, 27 Jan 2020 18:30:20 +0100 Subject: [PATCH 2/2] Changelog --- CHANGES.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.rst b/CHANGES.rst index 2f1e895c43..22b7568dca 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -35,6 +35,7 @@ Changelog **Fixed** +- #1511 Links to partitions for Internal Use are displayed in partitions viewlet - #1505 Manage Analyses Form re-applies partitioned Analyses back to the Root - #1503 Avoid duplicate CSS IDs in multi-column Add form - #1501 Fix Attribute Error in Reference Sample Popup