Impossible de mettre à jour le paramètre de catégorie via l'API

Bonjour, nous avons travaillé sur un outil pour créer des catégories à l’aide d’une entrée CSV. Nous avons réussi à établir avec succès les relations parent-enfant lors de la création des catégories. Cependant, nous rencontrons des problèmes lorsqu’il s’agit d’appliquer les paramètres de catégorie — cela échoue systématiquement. Toute aide sur la façon d’appliquer les paramètres de catégorie (comme ceux listés ci-dessous) après la création d’une nouvelle catégorie serait appréciée. Nous avons même essayé d’ajouter un délai allant jusqu’à 40 secondes avant d’appliquer les paramètres, mais cela ne fonctionne toujours pas.

Je souhaite également mettre à jour la description de la catégorie :: update_about_post(category_id, description) # Mettre à jour uniquement la description.

J’ai également voulu ajouter deux champs personnalisés supplémentaires pour la catégorie, comment faire.

Fonction pour mettre à jour les paramètres de la catégorie

def update_category_settings(category_id):
time.sleep(5) # Ajouter un délai pour s’assurer que la catégorie est entièrement créée avant d’appliquer les paramètres

url = f"{DISCOURSE_URL}/categories/{category_id}"
data = {
    "subcategory_list_style": "boxes", # Définir le style de sous-catégorie sur "Boîtes"
    "show_subcategory_list": True, # Afficher la liste des sous-catégories au-dessus des sujets
    "allow_solved_on_category": True # Activer la fonctionnalité "résolu"
}

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

if response.status_code == 200:
    print(f"Paramètres de catégorie mis à jour pour la catégorie ID {category_id}")
else:
    print(f"Échec de la mise à jour des paramètres pour la catégorie ID {category_id}: {response.status_code}, {response.text}")

Vos commentaires seraient appréciés car je suis bloqué à ce stade…

Je ne l’ai pas testé avec Python, mais cela vaut la peine d’essayer d’utiliser la chaîne "true" au lieu du booléen True pour les paramètres booléens. Discourse interprétera les chaînes "true" et "false" comme des booléens.

Je suppose que vous êtes en mesure de faire fonctionner certains appels API et que vous avez juste des difficultés avec celui-ci en particulier. Faites-nous savoir si ce n’est pas le cas.

Merci Simon… vous avez tout à fait raison, je parviens à faire fonctionner certains appels API… je parviens à créer une catégorie avec une relation parent-enfant… c’est juste que je n’arrive pas à ajouter les détails de description, et d’autres paramètres liés à la catégorie ne fonctionnent pas.

J’ai essayé de mettre à jour certains paramètres de catégorie sur mon forum local depuis la ligne de commande. Cela fonctionne :

❯ 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"

J’essaierais d’utiliser "true" au lieu de True si vous n’arrivez pas à le faire fonctionner.

Je pense que c’est normal. Pour ajouter la description, vous devez modifier le sujet “à propos” de la catégorie. Malheureusement, je ne pense pas que l’URL du sujet “à propos” soit renvoyée par une requête à l’URL de la catégorie (par exemple http://localhost:4200/categories/10.json). Vous pouvez cependant l’obtenir à partir de l’URL categories/json de votre site. Le champ qui contient l’URL du sujet “à propos” s’appelle topic_url. Par exemple : "topic_url":"/t/about-the-general-category/3".

Donc, à moins qu’il n’y ait un moyen plus simple que je ne vois pas, vous devrez faire une requête à /categories.json, obtenir le topic_url pour la catégorie qui vous intéresse, puis faire une requête API pour modifier le premier message de ce sujet.