Éditeur en ligne

La vue Éditeur en ligne permet de modifier le code source de vos builds depuis un navigateur web. Elle vous donne également la possibilité d’ouvrir des terminaux, des consoles Python, des consoles Odoo shell et des Jupyter Notebooks.

Aperçu de l'éditeur en ligne

Accéder à l’éditeur d’un build via l’onglet des branches, le menu déroulant des builds, ou en ajoutant /odoo-sh/editor à l’URL du build (par ex., https://odoo-addons-master-1.dev.odoo.com/odoo-sh/editor).

Modifier le code source

Le répertoire de travail est composé des éléments suivants :

.
├── home
│    └── odoo
│         ├── src
│         │    ├── odoo                Odoo Community source code
│         │    │    └── odoo-bin       Odoo server executable
│         │    ├── enterprise          Odoo Enterprise source code
│         │    ├── themes              Odoo Themes source code
│         │    └── user                Your repository branch source code
│         ├── data
│         │    ├── filestore           Database attachments, as well as the files of binary fields
│         │    └── sessions            Visitors and users sessions
│         └── logs
│              ├── install.log         Database installation logs
│              ├── odoo.log            Running server logs
│              ├── update.log          Database updates logs
│              └── pip.log             Python packages installation logs

Modifier le code source (fichiers sous /src) des builds de développement et de staging. Pour les builds de production, le code source est en lecture seule, car appliquer des modifications locales sur un serveur de production n’est pas une bonne pratique.

Note

Pour ouvrir un fichier dans l’éditeur, double-cliquer dessus dans le panneau de l’explorateur de fichiers. Modifier ensuite le fichier. Pour enregistrer les modifications, aller à Fichier ‣ Enregistrer ou utiliser le raccourci clavier Ctrl+S.

Si vous enregistrez un fichier Python dans le chemin des addons de votre serveur Odoo, Odoo le détectera et rechargera automatiquement, ce qui signifie que vos modifications sont immédiatement visibles.

Modification d'un fichier Python immédiatement visible

Cependant, si vos modifications sont stockées dans la base de données, comme le libellé d’un champ ou une vue, il est nécessaire de mettre à jour le module concerné pour appliquer les modifications. Pour mettre à jour le module du fichier actuellement ouvert, aller à Odoo ‣ Mettre à jour le module actuel.

Utiliser l'éditeur pour mettre à jour le module actuel

Astuce

Exécuter également la commande suivante dans un terminal pour mettre à jour un module :

odoo-bin -u <comma-separated module names> --stop-after-init

Committer et pousser les modifications

Pour valider et envoyer les modifications vers votre dépôt GitHub :

  • Ouvrir un terminal en allant dans Fichier ‣ Nouveau ‣ Terminal.

  • Changer le répertoire vers ~/src/user.

    cd ~/src/user
    
  • Déclarer votre identité.

    git config --global user.email "you@example.com" && git config --global user.name "Your Name"
    
  • Indexer vos modifications.

    git add
    
  • Valider vos modifications.

    git commit
    
  • Envoyer vos modifications.

    git push https HEAD:<branch>
    

    Dans cette commande :

    • https est le nom de votre dépôt distant GitHub HTTPS (par exemple, https://github.com/username/repository.git).

    • HEAD est la référence vers la dernière révision que vous avez validée.

    • <branch> doit être remplacé par le nom de la branche vers laquelle vous souhaitez envoyer les modifications, probablement la branche actuelle si vous travaillez sur une version de développement.

Vous serez invité à saisir votre nom d’utilisateur et mot de passe GitHub. Après avoir saisi vos identifiants, appuyer sur Entrée.

Les commandes pour valider et envoyer les modifications

Astuce

Si vous activez l’authentification à deux facteurs pour votre compte GitHub, vous pouvez créer un jeton d’accès personnel et l’utiliser comme mot de passe. Accorder la permission repo suffit.

Note

  • Il n’est pas possible de vous authentifier en utilisant SSH, car votre clé SSH privée n’est pas hébergée dans vos conteneurs de build pour des raisons de sécurité, ni transmise via un agent SSH, puisque vous accédez à l’éditeur via un navigateur web.

  • Le dossier source ~/src/user n’est pas extrait sur une branche mais plutôt sur une révision détachée. Cela est dû au fait que les builds fonctionnent sur des révisions spécifiques plutôt que sur des branches, ce qui signifie que vous pouvez avoir plusieurs builds sur la même branche, mais sur des révisions différentes.

Une fois vos modifications envoyées, selon votre comportement d’envoi de branche, un nouveau build peut être créé. Vous pouvez continuer à travailler dans l’éditeur depuis lequel vous avez envoyé les modifications, car il aura la même révision que le nouveau build créé. Cependant, assurez-vous toujours d’être dans l’éditeur d’un build utilisant la dernière révision de votre branche.

Consoles

Vous pouvez ouvrir des consoles Python, qui sont des shells interactifs IPython. Utiliser ces consoles Python (plutôt que des shells IPython dans un terminal) vous permet d’exploiter leurs capacités d’affichage enrichi pour afficher des objets en HTML.

Example

La classe Pretty affiche les listes de manière lisible.

Exemple de classe Pretty

Astuce

En utilisant pandas, vous pouvez afficher :

  • Les cellules d’un fichier CSV

    Exemple CSV pandas
  • Des graphiques

    Exemple de graphique pandas

Vous pouvez ouvrir des consoles shell Odoo pour expérimenter avec le registre Odoo et les méthodes de modèle de votre base de données. Vous pouvez également lire ou écrire directement sur vos enregistrements.

Avertissement

Dans une console shell Odoo, les transactions sont automatiquement validées. Cela signifie que les modifications apportées aux enregistrements sont appliquées à la base de données. Par exemple, si vous modifiez le nom d’un utilisateur, il sera également mis à jour dans votre base de données. Par conséquent, utiliser les consoles shell Odoo avec précaution sur les bases de données de production.

Vous pouvez utiliser env pour invoquer des modèles du registre de votre base de données, par exemple env['res.users'].

env['res.users'].search_read([], ['name', 'email', 'login'])
[{'id': 2,
'login': 'admin',
'name': 'Administrator',
'email': 'admin@example.com'}]