From b7956ee9d248fd3b05f015c2b27ea59d0c2f59ce Mon Sep 17 00:00:00 2001 From: Alexandru Mahmoud Date: Wed, 19 Aug 2020 14:10:16 -0400 Subject: [PATCH] apply dannon diff --- lib/galaxy/managers/users.py | 42 +++++++++++++++++++----------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/lib/galaxy/managers/users.py b/lib/galaxy/managers/users.py index 7d0058ff1898..b79cd0481646 100644 --- a/lib/galaxy/managers/users.py +++ b/lib/galaxy/managers/users.py @@ -91,26 +91,28 @@ def create(self, email=None, username=None, password=None, **kwargs): """ Create a new user. """ - self._error_on_duplicate_email(email) - user = self.model_class(email=email) - if password: - user.set_password_cleartext(password) - else: - user.set_random_password() - user.username = username - if self.app.config.user_activation_on: - user.active = False - else: - # Activation is off, every new user is active by default. - user.active = True - self.session().add(user) - try: - self.session().flush() - # TODO:?? flush needed for permissions below? If not, make optional - except exc.IntegrityError as db_err: - raise exceptions.Conflict(str(db_err)) - self.app.security_agent.create_user_role(user, self.app) - return user + from galaxy.util.filelock import FileLock + with FileLock('user_creation'): + self._error_on_duplicate_email(email) + user = self.model_class(email=email) + if password: + user.set_password_cleartext(password) + else: + user.set_random_password() + user.username = username + if self.app.config.user_activation_on: + user.active = False + else: + # Activation is off, every new user is active by default. + user.active = True + self.session().add(user) + try: + self.session().flush() + # TODO:?? flush needed for permissions below? If not, make optional + 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): """Mark the given user deleted."""