From 65d127a8e06a4068ebf6b32b9a834d5a344ec605 Mon Sep 17 00:00:00 2001 From: Dannon Baker Date: Tue, 19 Mar 2024 23:49:18 -0400 Subject: [PATCH 1/3] Fix creation and association of new histories w/ brand new single/remote user --- lib/galaxy/webapps/base/webapp.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/galaxy/webapps/base/webapp.py b/lib/galaxy/webapps/base/webapp.py index 3ec0d3cfc94d..1daa9f7c3487 100644 --- a/lib/galaxy/webapps/base/webapp.py +++ b/lib/galaxy/webapps/base/webapp.py @@ -951,8 +951,8 @@ def get_or_create_default_history(self): if default_history: history = default_history self.set_history(history) - else: - history = self.new_history() + else: + history = self.new_history() return history From ee260f83fad1d8b83635a10fa105a8785d5b554c Mon Sep 17 00:00:00 2001 From: Marius van den Beek Date: Wed, 20 Mar 2024 08:06:41 +0100 Subject: [PATCH 2/3] Create new history if user has no history AND for anonymous users --- lib/galaxy/webapps/base/webapp.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/galaxy/webapps/base/webapp.py b/lib/galaxy/webapps/base/webapp.py index 1daa9f7c3487..b808dbbbec64 100644 --- a/lib/galaxy/webapps/base/webapp.py +++ b/lib/galaxy/webapps/base/webapp.py @@ -953,6 +953,8 @@ def get_or_create_default_history(self): self.set_history(history) else: history = self.new_history() + else: + history = self.new_history() return history From 6043876c520d427b240b30926af9f4ac752508bb Mon Sep 17 00:00:00 2001 From: Dannon Baker Date: Wed, 20 Mar 2024 07:58:42 -0400 Subject: [PATCH 3/3] Refactoring for clarity. --- lib/galaxy/webapps/base/webapp.py | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/lib/galaxy/webapps/base/webapp.py b/lib/galaxy/webapps/base/webapp.py index b808dbbbec64..a6c20e777b6e 100644 --- a/lib/galaxy/webapps/base/webapp.py +++ b/lib/galaxy/webapps/base/webapp.py @@ -927,36 +927,28 @@ def get_or_create_default_history(self): Gets or creates a default history and associates it with the current session. """ + + # Just return the current history if one exists and is not deleted. history = self.galaxy_session.current_history if history and not history.deleted: return history + # Look for an existing history that has the default name, is not + # deleted, and is empty. If this exists, we associate it with the + # current session and return it. user = self.galaxy_session.user if user: - # Look for default history that (a) has default name + is not deleted and - # (b) has no datasets. If suitable history found, use it; otherwise, create - # new history. stmt = select(self.app.model.History).filter_by( user=user, name=self.app.model.History.default_name, deleted=False ) unnamed_histories = self.sa_session.scalars(stmt) - default_history = None for history in unnamed_histories: if history.empty: - # Found suitable default history. - default_history = history - break - - # Set or create history. - if default_history: - history = default_history - self.set_history(history) - else: - history = self.new_history() - else: - history = self.new_history() + self.set_history(history) + return history - return history + # No suitable history found, create a new one. + return self.new_history() def get_most_recent_history(self): """