Impossibile eliminare l'argomento predefinito di una categoria

Ciao, sto cercando di usare l’endpoint dell’API per eliminare gli argomenti.

Posso eliminare argomenti “normali” ma ho riscontrato il problema che l’argomento predefinito non può essere eliminato. Quello chiamato “Informazioni sulla categoria ________”

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

Ecco le mie domande:

  • Come posso eliminare questo argomento tramite API?
  • Come posso identificare quell’argomento tramite API in modo che venga saltato.

Esempio

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

    for topic in response.json()["topic_list"]["topics"]:
        # Elimina ogni argomento

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

puoi impostare gli argomenti della descrizione della categoria su “non in elenco”. io faccio così per tutti i miei. sospetto che tu possa identificare gli argomenti non in elenco tramite l’API?

3 Mi Piace

Puoi condividere perché vuoi rimuovere questi argomenti? Sono argomenti speciali che non possono essere eliminati e non sono destinati all’eliminazione.

Se il tuo obiettivo è eliminare tutti gli argomenti e poi eliminare la categoria, puoi eliminare la categoria senza eliminare l’argomento “Informazioni”.

Quando le persone vogliono sbarazzarsi degli argomenti “Informazioni” in qualche modo, renderli non elencati come suggerisce @Lilly è la strada da percorrere.

Penso che questi post non abbiano attributi univoci. Sono identificati come argomenti speciali dalla tabella category, tramite la colonna topic_id.

Puoi ottenerli con l’endpoint /c/{id}/show.json: https://docs.discourse.org/#tag/Categories/operation/getCategory.
Cerca la chiave topic_url.

Ad esempio:

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

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

Un po’ più di informazioni tecniche se ti interessano.

La protezione dall’eliminazione :shield: si trova qui: https://github.com/discourse/discourse/blob/7ecaf6295daf8759aa98d00e7035c4dc0f853303/lib/guardian/topic_guardian.rb#L165

E il metodo utilizzato è definito qui: https://github.com/discourse/discourse/blob/7ecaf6295daf8759aa98d00e7035c4dc0f853303/app/models/topic.rb#L1852

2 Mi Piace