Isambard
(Isambard)
Março 13, 2024, 10:39pm
1
Quais validações você pode ignorar e como? Estou tentando usar a API para postar e estou encontrando coisas como:
Entropia muito baixa
Tópico muito curto
Corpo muito similar
O problema é que é difícil saber quais outras verificações podem ser acionadas e, então, eu paro quando encontro uma, aborto e tento novamente.
1 curtida
pfaffman
(Jay Pfaffman)
Março 14, 2024, 7:03pm
2
Se você estiver importando mais do que alguns posts de um banco de dados existente, deverá usar um script de migração.
Existe um parâmetro skip_validations que você pode passar em Ruby, mas não sei se você pode passá-lo com a API.
Mas também, você realmente quer criar um monte de posts curtos que têm muito poucos caracteres diferentes e são como outros posts? Existem configurações do site para esses que você pode alterar se procurar nas configurações do site por essas palavras (entropia, comprimento mínimo do post, comprimento mínimo de título semelhante ou permitir títulos duplicados).
4 curtidas
Sim, isso deve funcionar (o WP-Discourse o usa, por exemplo)
def find_post_revision_from_topic_id
post =
Post.find_by(topic_id: params[:topic_id].to_i, post_number: (params[:post_number] || 1).to_i)
raise Discourse::NotFound unless guardian.can_see?(post)
revision = params[:revision].to_i
raise Discourse::NotFound if revision < 2
post_revision = PostRevision.find_by(post_id: post.id, number: revision)
raise Discourse::NotFound unless post_revision
post_revision.post = post
guardian.ensure_can_see!(post_revision)
post_revision
end
private
def user_posts(guardian, user_id, opts)
# Topic.unscoped is necessary to remove the default deleted_at: nil scope
2 curtidas
Isambard
(Isambard)
Março 19, 2024, 12:12am
4
Acho que há um bug na opção de pular validações.
Quando uso a opção de pular validações para criar um Tópico, isso funciona e é possível para o usuário criar um tópico em uma categoria, mesmo que normalmente ele não tivesse permissão para fazer isso.
No entanto, ao tentar responder a esse mesmo tópico, a verificação de validação não é pulada e a criação desta postagem falha.
1 curtida
Você pode detalhar a quais pós-validações você está se referindo exatamente? Que erros você está recebendo?
simon
Março 20, 2024, 10:46pm
6
Você tem certeza disso? Pelo que entendi, skip_validations faz o que diz na seção de opções na parte inferior de post_creator.rb:
# :raw_html - Perform no processing
# :raw_email - Imported from an email
# via_email - Mark this post as arriving via email
# raw_email - Full text of arriving email (to store)
# action_code - Describes a small_action post (optional)
# skip_jobs - Don't enqueue jobs when creation succeeds. This is needed if you
# wrap `PostCreator` in a transaction, as the sidekiq jobs could
# dequeue before the commit finishes. If you do this, be sure to
# call `enqueue_jobs` after the transaction is committed.
# hidden_reason_id - Reason for hiding the post (optional)
# skip_validations - Do not validate any of the content in the post
# draft_key - the key of the draft we are creating (will be deleted on success)
# advance_draft - Destroy draft after creating post or topic
# silent - Do not update topic stats and fields like last_post_user_id
#
# When replying to a topic:
# topic_id - topic we're replying to
# reply_to_post_number - post number we're replying to
#
# When creating a topic:
# title - New topic title
É usado principalmente para ignorar as restrições adicionadas por meio de configurações do site, como:
comprimento mínimo da postagem
entropia mínima do corpo
comprimento mínimo do título do tópico
…
Acho que também é usado para ignorar os limites de taxa de postagem.
Eu não achava que isso permitia que os usuários criassem tópicos em categorias nas quais eles não têm permissão para postar.
2 curtidas