Loading lib/galaxy/managers/users.py +8 −6 Original line number Diff line number Diff line Loading @@ -144,15 +144,13 @@ class UserManager(base.ModelManager, deletable.PurgableManagerMixin): else: # Activation is off, every new user is active by default. user.active = True self.session().add(user) try: session = self.session() with transaction(session): session.commit() # TODO:?? flush needed for permissions below? If not, make optional session.add(user) try: # Creating a private role will commit the session self.app.security_agent.create_user_role(user, self.app) except exc.IntegrityError as db_err: raise exceptions.Conflict(str(db_err)) self.app.security_agent.create_user_role(user, self.app) return user def delete(self, user, flush=True): Loading Loading @@ -197,6 +195,10 @@ class UserManager(base.ModelManager, deletable.PurgableManagerMixin): if not user.deleted: raise exceptions.MessageException("User '%s' has not been deleted, so they cannot be purged." % user.email) private_role = self.app.security_agent.get_private_user_role(user) if private_role is None: raise exceptions.InconsistentDatabase( "User '%s' private role is missing while attempting to purge deleted user." % user.email ) # Delete History for active_history in user.active_histories: self.session().refresh(active_history) Loading lib/galaxy/model/security.py +3 −0 Original line number Diff line number Diff line Loading @@ -765,6 +765,9 @@ WHERE history.user_id != :user_id and history_dataset_association.dataset_id = : return self.get_private_user_role(user) def get_private_user_role(self, user, auto_create=False): if auto_create and user.id is None: # New user, directly create private role return self.create_private_user_role(user) stmt = ( select(Role) .where( Loading Loading
lib/galaxy/managers/users.py +8 −6 Original line number Diff line number Diff line Loading @@ -144,15 +144,13 @@ class UserManager(base.ModelManager, deletable.PurgableManagerMixin): else: # Activation is off, every new user is active by default. user.active = True self.session().add(user) try: session = self.session() with transaction(session): session.commit() # TODO:?? flush needed for permissions below? If not, make optional session.add(user) try: # Creating a private role will commit the session self.app.security_agent.create_user_role(user, self.app) except exc.IntegrityError as db_err: raise exceptions.Conflict(str(db_err)) self.app.security_agent.create_user_role(user, self.app) return user def delete(self, user, flush=True): Loading Loading @@ -197,6 +195,10 @@ class UserManager(base.ModelManager, deletable.PurgableManagerMixin): if not user.deleted: raise exceptions.MessageException("User '%s' has not been deleted, so they cannot be purged." % user.email) private_role = self.app.security_agent.get_private_user_role(user) if private_role is None: raise exceptions.InconsistentDatabase( "User '%s' private role is missing while attempting to purge deleted user." % user.email ) # Delete History for active_history in user.active_histories: self.session().refresh(active_history) Loading
lib/galaxy/model/security.py +3 −0 Original line number Diff line number Diff line Loading @@ -765,6 +765,9 @@ WHERE history.user_id != :user_id and history_dataset_association.dataset_id = : return self.get_private_user_role(user) def get_private_user_role(self, user, auto_create=False): if auto_create and user.id is None: # New user, directly create private role return self.create_private_user_role(user) stmt = ( select(Role) .where( Loading