Não consigo excluir o tópico padrão de uma categoria

Olá, estou tentando usar o endpoint da API para excluir tópicos.

Consigo excluir tópicos “normais”, mas encontrei o problema de que o tópico padrão não pode ser excluído. Aquele chamado “Sobre a categoria ________”

{{baseUrl}}/t/{{id}}.json

Aqui estão minhas perguntas:

  • Como posso excluir este tópico usando a API?
  • Como posso identificar esse tópico usando a API para que ele seja ignorado.

Exemplo

    url = base_url + "/c/" + slug + "/22.json"
    response = requests.request("GET", url, headers=headers, data=payload)

    for topic in response.json()["topic_list"]["topics"]:
        # Exclui cada tópico

        url =  base_url + "/t/topic_id.json".replace("topic_id", str(topic["id"])  )
        response = requests.request("DELETE", url, headers=headers, data=payload)

você pode definir os tópicos da descrição da categoria como “não listados”. eu faço isso com todos os meus. suspeito que você possa identificar os tópicos não listados através da API?

3 curtidas

Você pode compartilhar por que deseja remover esses tópicos? Esses são tópicos especiais que não podem e não devem ser excluídos.

Se o seu objetivo é excluir todos os tópicos e depois excluir a categoria, você pode excluir a categoria sem excluir o tópico Sobre.

Quando as pessoas querem se livrar dos tópicos Sobre de alguma forma, torná-los não listados como @Lilly sugere é o caminho a seguir.

Eu acho que essas postagens não têm nenhum atributo único. Elas são identificadas como tópicos especiais na tabela category, através da coluna topic_id.

Você pode obtê-las com o endpoint /c/{id}/show.json: https://docs.discourse.org/#tag/Categories/operation/getCategory.
Procure pela chave topic_url.

Por exemplo:

https://meta.discourse.org/c/7/show.json

"topic_url": "/t/about-the-dev-category/1026"

Um pouco mais de informação técnica, se isso lhe interessar.

A proteção contra exclusão :shield: está aqui: discourse/lib/guardian/topic_guardian.rb at 7ecaf6295daf8759aa98d00e7035c4dc0f853303 · discourse/discourse · GitHub

E o método usado é definido aqui: discourse/app/models/topic.rb at 7ecaf6295daf8759aa98d00e7035c4dc0f853303 · discourse/discourse · GitHub

2 curtidas