Не удалось обновить настройки категории через API

Здравствуйте! Мы работаем над инструментом для создания категорий с использованием CSV-файла. Нам удалось успешно установить родительско-дочерние связи при создании категорий. Однако у нас возникают проблемы с применением настроек категорий — это постоянно не работает. Будем признательны за любые рекомендации по применению настроек категорий (как перечисленных ниже) после создания новой категории. Мы даже пробовали добавлять задержку до 40 секунд перед применением настроек, но это всё равно не помогает.

Также хотим обновить описание категории :: update_about_post(category_id, description) # Обновить только описание.

Кроме того, я хотел бы добавить два дополнительных пользовательских поля для категории. Как это сделать?

Функция для обновления настроек категории

def update_category_settings(category_id):
time.sleep(5) # Добавить задержку, чтобы убедиться, что категория полностью создана перед применением настроек

url = f"{DISCOURSE_URL}/categories/{category_id}"
data = {
    "subcategory_list_style": "boxes",  # Установить стиль списка подкатегорий в "Коробки"
    "show_subcategory_list": True,  # Показать список подкатегорий выше тем
    "allow_solved_on_category": True  # Включить функцию решения
}

response = requests.put(url, json={"category": data}, headers=headers)

if response.status_code == 200:
    print(f"Настройки категории обновлены для ID категории {category_id}")
else:
    print(f"Не удалось обновить настройки для ID категории {category_id}: {response.status_code}, {response.text}")

Любая помощь будет очень кстати, так как я застрял на этом этапе…

Я не тестировал это с Python, но стоит попробовать использовать строку "true" вместо булевого значения True для булевых параметров. Discourse интерпретирует строки "true" и "false" как булевы значения.

Предполагаю, что вы уже смогли выполнить некоторые вызовы API, и проблема возникает только с этим конкретным. Дайте нам знать, если это не так.

Спасибо, Саймон. Вы абсолютно правы, я могу заставить некоторые вызовы API работать… Я могу создавать категории с родительско-детскими связями… Просто я не могу добавить описание и другие настройки категории — не получается заставить это работать.

Я попытался обновить некоторые настройки категорий на локальном форуме через командную строку. Это работает:

❯ curl -X PUT "http://localhost:4200/categories/10.json" \
      -H "Api-Key: $api_key" \
      -H "Api-Username: system" \
      -H "Content-Type: multipart/form-data;" \
      -F "show_subcategory_list=true" \
      -F "subcategory_list_style='boxes'" \
      -F "allow_badges=false"

Попробуйте использовать "true" вместо True, если у вас не получается.

Думаю, это ожидаемое поведение. Чтобы добавить описание, нужно отредактировать тему «о» категории. К сожалению, я не думаю, что URL темы «о» возвращается при запросе к URL категории (например, http://localhost:4200/categories/10.json). Однако вы можете получить его через URL categories/json вашего сайта. Поле, содержащее URL темы «о», называется topic_url. Например: "topic_url":"/t/about-the-general-category/3".

Так что, если нет более простого способа, который я не вижу, вам нужно сделать запрос к /categories.json, получить topic_url для интересующей вас категории, а затем выполнить API-запрос для редактирования первого сообщения этой темы.