il n'est pas possible (ni souhaitable) d'écrire les actions automatisées "serveur" d'Odoo en JavaScript.
Pour être direct : Non, il n'est pas possible (ni souhaitable) d'écrire les actions automatisées "serveur" d'Odoo en JavaScript.
Odoo est un ERP dont le coeur (Backend) est écrit en Python.
Bien que le frontend d'Odoo (l'interface web) soit en JS, toute la logique de base de données, les calculs et les automatisations se font côté serveur, en Python.
Voici pourquoi vous devez utiliser Python et comment surmonter cette barrière si vous êtes plus à l'aise en JS.
1. Pourquoi Python est obligatoire pour le Backend ?
Lorsque votre application React envoie des données à Odoo, voici le chemin :
- App React (JS) envoie une requête API (JSON).
- Serveur Odoo (Python) reçoit la requête.
- ORM Odoo (Python) traite les données et les écrit en base.
- Automatisations (Python) se déclenchent (ex: nettoyer le nom, valider le profil).
Le moteur JavaScript d'Odoo ne tourne que dans le navigateur web d'un utilisateur connecté à l'interface Odoo. Comme votre App React parle directement au serveur via l'API, le moteur JS d'Odoo n'est jamais sollicité.
2. L'Alternative : Déplacer la logique vers le Frontend (React/JS)
Si vous voulez absolument éviter le Python, vous pouvez déplacer une partie de la logique "métier" dans votre App React.
Exemple : Le Nettoyeur de Nom
- Option A (Python - Recommandé) : React envoie Prénom + Nom. Odoo les concatène.
- Avantage : Si un admin modifie le prénom directement dans Odoo, le nom complet se met à jour aussi. La donnée est toujours propre.
- Option B (JS / React - Déconseillé) : React concatène Prénom + Nom avant d'envoyer.
- Inconvénient : Si demain vous modifiez une fiche dans Odoo, la logique ne s'applique pas. Vos données risquent de devenir incohérentes.
Bilan : Pour les calculs simples (concaténation, totaux), vous pouvez le faire en React. Pour les logiques complexes (vérifier si tous les documents sont valides dans la base), vous devez le faire côté Odoo (Python).
3. Rassurez-vous : Le Python d'Odoo est très simple
Si vous savez coder en JS, le Python d'Odoo est trivial. C'est presque de la lecture en anglais. Il n'y a pas de gestion asynchrone complexe (Promise, async/await) comme en JS. Tout est séquentiel.
Comparatif JS vs Python (Odoo)
En JavaScript (Ce que vous connaissez) :
codeJavaScript
downloadcontent_copy
expand_less// Si le candidat existe, on update
if (record.candidate_id) {
let total = 0;
// Imaginaire : fetch des experiences
experiences.forEach(exp => {
total += exp.duration;
});
record.total_xp = total;
}En Python Odoo (Ce que vous devez faire) :
codePython
downloadcontent_copy
expand_less# Si le candidat existe, on update
if record.x_candidate_id:
total = 0
# Le "fetch" est magique en Odoo, pas d'API call
for exp in record.x_candidate_id.experience_ids:
total += exp.x_duration
record.x_total_xp = total4. Résumé
- Front (React) = JavaScript 🟢
- Back (Odoo Actions Serveur) = Python 🔵
- Interface Odoo (Vues/Widgets) = JavaScript 🟢 (Mais inutile ici car vous avez votre propre front React).
Mon conseil :
Faites l'effort d'utiliser Python pour les 5 automatisations que je vous ai données. Copiez-collez mes snippets. C'est la seule façon d'avoir un système robuste, sécurisé et maintenable dans le temps. Odoo est conçu comme ça.