Unverified Commit b89cb420 authored by davelopez's avatar davelopez
Browse files

Commit user and private role in a single DB transaction

parent 4c9e6cff
Loading
Loading
Loading
Loading
+5 −7
Original line number Diff line number Diff line
@@ -133,7 +133,7 @@ class UserManager(base.ModelManager, deletable.PurgableManagerMixin):
        Create a new user.
        """
        self._error_on_duplicate_email(email)
        user = self.model_class(email=email)
        user = User(email=email)
        if password:
            user.set_password_cleartext(password)
        else:
@@ -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
            user.attempt_create_private_role()
        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):