From 1113f4c7441b49afd0acb8611b16fa91c8c41c1f Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Sat, 23 Dec 2023 10:34:11 +0100 Subject: [PATCH] Fix User.current_galaxy_session --- lib/galaxy/model/__init__.py | 4 +++- test/unit/data/test_galaxy_mapping.py | 11 +++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/galaxy/model/__init__.py b/lib/galaxy/model/__init__.py index 722afb197ff..c19ec9770bc 100644 --- a/lib/galaxy/model/__init__.py +++ b/lib/galaxy/model/__init__.py @@ -10761,7 +10761,9 @@ User.preferences = association_proxy("_preferences", "value", creator=UserPrefer # See https://github.com/sqlalchemy/sqlalchemy/discussions/7638 for approach session_partition = select( GalaxySession, - func.row_number().over(order_by=GalaxySession.update_time, partition_by=GalaxySession.user_id).label("index"), + func.row_number() + .over(order_by=GalaxySession.update_time.desc(), partition_by=GalaxySession.user_id) + .label("index"), ).alias() partitioned_session = aliased(GalaxySession, session_partition) User.current_galaxy_session = relationship( diff --git a/test/unit/data/test_galaxy_mapping.py b/test/unit/data/test_galaxy_mapping.py index ccda9969384..1f19f0df860 100644 --- a/test/unit/data/test_galaxy_mapping.py +++ b/test/unit/data/test_galaxy_mapping.py @@ -698,6 +698,17 @@ class TestMappings(BaseModelTestCase): session.add(lf) session.flush() + def test_current_session(self): + user = model.User(email="testworkflows@bx.psu.edu", password="password") + galaxy_session = model.GalaxySession() + galaxy_session.user = user + self.persist(user, galaxy_session) + assert user.current_galaxy_session == galaxy_session + new_galaxy_session = model.GalaxySession() + new_galaxy_session.user = user + self.persist(user, new_galaxy_session) + assert user.current_galaxy_session == new_galaxy_session + def test_flush_refreshes(self): # Normally I don't believe in unit testing library code, but the behaviors around attribute # states and flushing in SQL Alchemy is very subtle and it is good to have a executable