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 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):