def register(session, username, password, fullname, role): try: dbuser = DBUser(username, password, fullname) session.add(dbuser) dbuser.role = session.query(Role).filter(Role.name == role).one() session.commit() response = UserOk.register() except IntegrityError: session.rollback() response = UserError.register_username_taken() except: session.rollback() response = UserError.register_failed() return response