jucajuca
(Juan Carlos)
11.Август.2023 17:57:39
1
Здравствуйте, я пытаюсь использовать конечную точку API для удаления тем.
Я могу удалять «обычные» темы, но столкнулся с проблемой: тему по умолчанию удалить нельзя. Речь о теме с названием «О категории ________».
{{baseUrl}}/t/{{id}}.json
У меня следующие вопросы:
Как удалить эту тему через API?
Как идентифицировать эту тему через API, чтобы пропускать её?
Пример
url = base_url + "/c/" + slug + "/22.json"
response = requests.request("GET", url, headers=headers, data=payload)
for topic in response.json()["topic_list"]["topics"]:
# Удаляет каждую тему
url = base_url + "/t/topic_id.json".replace("topic_id", str(topic["id"]) )
response = requests.request("DELETE", url, headers=headers, data=payload)
Lilly
(Lillian )
11.Август.2023 18:01:41
2
Вы можете установить темы описания категории как «скрытые». Я делаю это для всех своих категорий. Подозреваю, что вы можете идентифицировать скрытые темы через API?
Canapin
(Coin-coin le Canapin)
11.Август.2023 19:05:24
3
Можете ли вы объяснить, почему вы хотите удалить эти темы? Это специальные темы, которые нельзя и не предназначены для удаления.
Если ваша цель — удалить все темы, а затем удалить категорию, вы можете удалить категорию, не удаляя тему «О нас».
Когда люди хотят как-то избавиться от тем «О нас», лучший способ — скрыть их из списка, как предложил @Lilly .
Juan Carlos:
Как я могу идентифицировать эту тему с помощью API, чтобы пропустить её?
Полагаю, у этих постов нет уникальных атрибутов. Они определяются как специальные темы в таблице category через столбец topic_id.
Вы можете получить их с помощью конечной точки /c/{id}/show.json: https://docs.discourse.org/#tag/Categories/operation/getCategory .
Ищите ключ topic_url.
Например:
https://meta.discourse.org/c/7/show.json
"topic_url": "/t/about-the-dev-category/1026"
Немного более технической информации, если это вас интересует.
Защита от удаления находится здесь: discourse/lib/guardian/topic_guardian.rb at 7ecaf6295daf8759aa98d00e7035c4dc0f853303 · discourse/discourse · GitHub
И используемый метод определён здесь: discourse/app/models/topic.rb at 7ecaf6295daf8759aa98d00e7035c4dc0f853303 · discourse/discourse · GitHub