No, the function current_user_can_for_blog
expects a blog ID to be passed to it, not a post ID. I would change it to be like this:
if( isset( $_POST['post_type'] ) && $_POST['post_type'] != 'portfolio' ) {
if ( !current_user_can( $post_id, 'edit_post' ) )
return;
}