def update_authenticated_user(): """Update one or multiple fields of the authenticated user.""" # Load update request data user_info = AuthenticatedUserSchema(strict=True).load(request.json, partial=False).data if any(k in user_info for k in USER_READ_ONLY_FIELDS): abort( http.client.FORBIDDEN, "These fields are read-only: " + ', '.join(USER_READ_ONLY_FIELDS) ) # Patch in user_id manually (do not allow requests to change id) user_info['user_id'] = request.user.user_id # Ensure that user name is not taken if user_info.get( 'user_name', request.user.user_name ) != request.user.user_name and local.model.user_exists(user_info['user_name'], None): abort(http.client.BAD_REQUEST, "User name %s is already taken." % user_info['user_name']) # Validate user name if not NAME_REGEX.match(user_info.get('user_name', request.user.user_name)): abort( http.client.BAD_REQUEST, "User name characters must be alphanumeric, underscores, periods, or dashes.", ) # Update user local.model.update_user_info(user_info) # Return updated user return AuthenticatedUserSchema().dump(local.model.get_user(request.user.user_id)).data
def update_users(): """ Update arbitrary users. This operation is reserved for the root user. Other users can update their information through the /user "authenticated user" API. Follows the bulk-update convention in the CodaLab API, but currently only allows one update at a time. """ if request.user.user_id != local.model.root_user_id: abort(http.client.FORBIDDEN, "Only root user can update other users.") users = AuthenticatedUserSchema(strict=True, many=True).load(request.json, partial=True).data if len(users) != 1: abort(http.client.BAD_REQUEST, "Users can only be updated on at a time.") local.model.update_user_info(users[0]) # Return updated users users = local.model.get_users(user_ids=[users[0]['user_id']]) return AuthenticatedUserSchema(many=True).dump(users).data
def update_authenticated_user(): """Update one or multiple fields of the authenticated user.""" # Load update request data user_info = AuthenticatedUserSchema(strict=True).load(request.json, partial=False).data if any(k in user_info for k in USER_READ_ONLY_FIELDS): abort(httplib.FORBIDDEN, "These fields are read-only: " + ', '.join(USER_READ_ONLY_FIELDS)) # Patch in user_id manually (do not allow requests to change id) user_info['user_id'] = request.user.user_id # Ensure that user name is not taken if user_info.get( 'user_name', request.user.user_name ) != request.user.user_name and local.model.user_exists(user_info['user_name'], None): abort(httplib.BAD_REQUEST, "User name %s is already taken." % user_info['user_name']) # Validate user name if not NAME_REGEX.match(user_info.get('user_name', request.user.user_name)): abort( httplib.BAD_REQUEST, "User name characters must be alphanumeric, underscores, periods, or dashes.", ) # Update user local.model.update_user_info(user_info) # Return updated user return AuthenticatedUserSchema().dump(local.model.get_user(request.user.user_id)).data
def fetch_authenticated_user(): """Fetch authenticated user.""" user_info = AuthenticatedUserSchema().dump(request.user).data user_info['data']['attributes']['is_root_user'] = ( request.user.user_id == local.model.root_user_id) user_info['data']['attributes']['protected_mode'] = ( os.environ.get('CODALAB_PROTECTED_MODE') == 'True') return user_info
def fetch_authenticated_user(): """Fetch authenticated user.""" return AuthenticatedUserSchema().dump(request.user).data
def fetch_authenticated_user(): """Fetch authenticated user.""" user_info = AuthenticatedUserSchema().dump(request.user).data user_info['data']['attributes']['is_root_user'] = ( request.user.user_id == local.model.root_user_id) return user_info