diff --git a/lib/galaxy/jobs/runners/util/cli/shell/local.py b/lib/galaxy/jobs/runners/util/cli/shell/local.py index 6132655b5ff..c4deeeb3624 100644 --- a/lib/galaxy/jobs/runners/util/cli/shell/local.py +++ b/lib/galaxy/jobs/runners/util/cli/shell/local.py @@ -34,6 +34,8 @@ class LocalShell(BaseShellExec): True >>> exec_result.stdout.strip() == u'Hello World' True + >>> exec_result.returncode + 0 >>> exec_result = exec_python("import time; time.sleep(10)", timeout=1, timeout_check_interval=.1) >>> exec_result.stdout == u'' True @@ -63,6 +65,8 @@ class LocalShell(BaseShellExec): kill_pg(p.pid) return Bunch(stdout=u'', stderr=TIMEOUT_ERROR_MESSAGE, returncode=TIMEOUT_RETURN_CODE) outf.seek(0) + # Need to poll once to establish return code + p.poll() return Bunch(stdout=_read_str(outf), stderr=_read_str(p.stderr), returncode=p.returncode) diff --git a/lib/galaxy/managers/users.py b/lib/galaxy/managers/users.py index 5d1b5ae9283..f3f9ba94d0f 100644 --- a/lib/galaxy/managers/users.py +++ b/lib/galaxy/managers/users.py @@ -106,12 +106,7 @@ class UserManager(base.ModelManager, deletable.PurgableManagerMixin): # TODO:?? flush needed for permissions below? If not, make optional except exc.IntegrityError as db_err: raise exceptions.Conflict(str(db_err)) - # can throw an sqlalx.IntegrityError if username not unique - self.app.security_agent.create_private_user_role(user) - # We set default user permissions, before we log in and set the default history permissions - if hasattr(self.app.config, "new_user_dataset_access_role_default_private"): - permissions = self.app.config.new_user_dataset_access_role_default_private - self.app.security_agent.user_set_default_permissions(user, default_access_private=permissions) + self.app.security_agent.create_user_role(user, self.app) return user def delete(self, user, flush=True): diff --git a/lib/galaxy/model/security.py b/lib/galaxy/model/security.py index 698942a7d00..6505d60f521 100644 --- a/lib/galaxy/model/security.py +++ b/lib/galaxy/model/security.py @@ -656,6 +656,18 @@ class GalaxyRBACAgent(RBACAgent): self.sa_session.flush() return assoc + def create_user_role(self, user, app): + # Create private user role if necessary + if not self.get_private_user_role(user): + self.create_private_user_role(user) + # Create default user permissions if necessary + if not user.default_permissions: + if hasattr(app.config, "new_user_dataset_access_role_default_private"): + permissions = app.config.new_user_dataset_access_role_default_private + self.user_set_default_permissions(user, default_access_private=permissions) + else: + self.user_set_default_permissions(user, history=True, dataset=True) + def create_private_user_role(self, user): # Create private role role = self.model.Role(name=user.email, description='Private Role for ' + user.email, type=self.model.Role.types.PRIVATE) diff --git a/lib/galaxy/web/framework/webapp.py b/lib/galaxy/web/framework/webapp.py index a43cfd49ac7..31dd71bd584 100644 --- a/lib/galaxy/web/framework/webapp.py +++ b/lib/galaxy/web/framework/webapp.py @@ -714,6 +714,7 @@ class GalaxyWebTransaction(base.DefaultWebTransaction, - add the disk usage of the current session to the user's total disk usage """ self.user_checks(user) + self.app.security_agent.create_user_role(user, self.app) # Set the previous session prev_galaxy_session = self.galaxy_session prev_galaxy_session.is_valid = False diff --git a/packages/tool_util/HISTORY.rst b/packages/tool_util/HISTORY.rst index 52c2df7066e..cec433c3e50 100644 --- a/packages/tool_util/HISTORY.rst +++ b/packages/tool_util/HISTORY.rst @@ -6,7 +6,13 @@ History .. to_doc --------------------- -19.9.1.dev0 +19.9.2.dev0 +--------------------- + + + +--------------------- +19.9.1 (2019-12-28) --------------------- diff --git a/packages/tool_util/galaxy/project_galaxy_tool_util.py b/packages/tool_util/galaxy/project_galaxy_tool_util.py index 0ee2dfac196..c9c01454c57 100644 --- a/packages/tool_util/galaxy/project_galaxy_tool_util.py +++ b/packages/tool_util/galaxy/project_galaxy_tool_util.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -__version__ = '19.9.1.dev0' +__version__ = '19.9.2.dev0' PROJECT_NAME = "galaxy-tool-util" PROJECT_OWNER = PROJECT_USERAME = "galaxyproject"