Extraire chapitres d’Odoo eLearning
via l’API JSON-RPC
Méthode pour extraire tous les chapitres (sections) et sous-chapitres (contenus) d’Odoo eLearning (module website_slides) via l’API JSON-RPC. Je vous donne la logique de parcours + des exemples concrets (cURL et Python).
.
Façon fiable d’extraire
1) Modèles & hiérarchie à connaître
- slide.channel : un cours.
-
slide.slide : une “slide” de cours. Sert à la fois :
- de section (chapitre) quand is_category = True,
- de contenu (vidéo, PDF, quiz, page…) quand is_category = False.
- Les contenus rattachés à une section portent category_id = <id de la section>. S’il n’y a pas de section, category_id est vide et le contenu est au niveau racine du cours. Odoo+1GitLabStack Overflow
2) Champs utiles à lire
- id, name, sequence, is_category, category_id, slide_type, website_published, html_content, url, channel_id
-
(optionnels selon vos besoins) : description, quiz_nb_attempts, completion_time, mime_type, etc.
Réf. JSON-RPC Odoo 17 pour la méthode execute_kw. cybrosys.com
3) Algorithme “Get Data”
Pour un cours donné (ex. channel_id = 42) :
-
Lister les sections (chapitres) :
- Domaine : [('channel_id','=',42), ('is_category','=',True)]
-
Pour chaque section, lister ses contenus :
- Domaine : [('channel_id','=',42), ('is_category','=',False), ('category_id','=',<id_section>)]
-
Lister aussi les contenus au niveau racine (sans section) :
-
Domaine : [('channel_id','=',42), ('is_category','=',False), ('category_id','=',False)]
La colonne sequence vous donne l’ordre d’affichage souhaité. GitLab
-
Domaine : [('channel_id','=',42), ('is_category','=',False), ('category_id','=',False)]
Exemples prêts à l’emploi
- a) cURL (JSON-RPC “brut”)
- B) Python (requests) – extraction hiérarchique en un dict
.
Notes pratiques & variantes
Découvrir les cours disponibles,>
Si vous devez découvrir les cours disponibles, commencez par slide.channel avec search_read([], ["id","name","category","website_published"]), puis itérez sur chaque channel_id.
L’ordre d’affichage final est donné...
L’ordre d’affichage final est donné par sequence (cours → sections → contenus). Odoo+1
Pour des intégrations front Odoo Website,...
Pour des intégrations front Odoo Website, il existe aussi l’endpoint /web/dataset/call_kw (même logique JSON-RPC) si vous préférez ce chemin technique. cybro
lister automatiquement tous les cours (slide.channel) dans Odoo eLearning.
- Option A — cURL (JSON-RPC “brut”)
- Option B — Script Python prêt à l’emploi