Editor en línea

La vista del editor en línea te permite editar el código fuente de tus compilaciones desde un navegador web. También te permite abrir terminales, consolas de Python, consolas del shell de Odoo y Jupyter Notebooks.

Vista general del editor en línea

Puedes acceder al editor de una compilación desde la pestaña Ramas, el menú desplegable de compilaciones o al agregar /odoo-sh/editor a la URL de la compilación (por ejemplo, https://odoo-addons-master-1.dev.odoo.com/odoo-sh/editor).

Editar el código fuente

El directorio de trabajo está compuesto por lo siguiente:

.
├── 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

Puedes editar el código fuente (los archivos dentro de /src) de las compilaciones de desarrollo y de prueba. En las compilaciones de producción, el código fuente solo es de lectura, ya que aplicar cambios locales en un servidor de producción no es una buena práctica.

Nota

Para abrir un archivo en el editor, haz doble clic en él en el panel del explorador de archivos y después podrás editar el archivo. Para guardar los cambios, ve a Archivo ‣ Guardar o presiona las teclas Ctrl + S para usar el atajo del teclado.

Si guardas un archivo de Python en la ruta de complementos de tu servidor de Odoo, Odoo lo detectará y recargará de forma automática, así que verás los cambios de inmediato.

Imagen en movimiento de un cambio en un archivo de Python inmediatamente visible

Sin embargo, si guardas los cambios en la base de datos, como la etiqueta de un campo o una vista, es necesario que actualices el módulo relacionado para aplicar los cambios. Para actualizar el módulo del archivo abierto en ese momento, ve a Odoo ‣ Actualizar módulo actual.

Captura de pantalla del uso del editor para actualizar el módulo actual

Truco

También puedes ejecutar el siguiente comando en una terminal para actualizar un módulo:

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

Confirmar y enviar cambios

Para confirmar y enviar cambios a tu repositorio de GitHub:

  • Abre una terminal desde Archivo ‣ Nuevo ‣ Terminal.

  • Cambia el directorio a ~/src/user.

    cd ~/src/user
    
  • Indica tu identidad.

    git config --global user.email "you@example.com" && git config --global user.name "Your Name"
    
  • Prepara tus cambios.

    git add
    
  • Confirma tus cambios.

    git commit
    
  • Envía tus cambios.

    git push https HEAD:<branch>
    

    En este comando:

    • https es el nombre de tu repositorio remoto de GitHub por HTTPS (por ejemplo, https://github.com/username/repository.git).

    • HEAD es la referencia a la última revisión que confirmaste.

    • Debes reemplazar <branch> por el nombre de la rama a la que quieres enviar los cambios, por lo general la rama actual si trabajas en una compilación de desarrollo.

El sistema te pedirá tu nombre de usuario y contraseña de GitHub. Presiona Enter después de ingresar tus credenciales.

Captura de pantalla de los comandos para confirmar y enviar cambios

Truco

Si activas la autenticación de dos factores en tu cuenta de GitHub puedes crear un token de acceso personal y usarlo como contraseña, basta con otorgar permiso al repositorio.

Nota

  • No puedes autenticarte con SSH, ya que tu clave SSH privada no está alojada en los contenedores de la compilación por motivos de seguridad, ni se reenvía mediante un agente SSH, ya que accedes al editor desde un navegador web.

  • La carpeta de origen ~/src/user no está asociada a una rama, sino a una revisión independiente. Esto sucede porque las compilaciones trabajan sobre revisiones específicas y no sobre ramas, así puedes tener varias compilaciones en la misma rama, pero en revisiones distintas.

Luego de enviar tus cambios, según el comportamiento de tu envío de ramas, el sistema puede crear una nueva compilación. Puedes seguir trabajando en el editor desde el que enviaste los cambios, ya que tendrá la misma revisión que la nueva compilación creada. Aun así, siempre verifica que estés en el editor de una compilación que use la última revisión de tu rama.

Consolas

Puedes abrir consolas de Python, que son intérpretes interactivos de IPython. Usar estas consolas de Python (en lugar de intérpretes de IPython dentro de una terminal) te permite utilizar las capacidades de visualización enriquecida para mostrar objetos en HTML.

Example

La clase Pretty muestra listas de forma legible.

Ejemplo de la clase Pretty

Truco

Con pandas puedes mostrar:

  • Celdas de un archivo CSV

    Ejemplo de CSV en pandas
  • Gráficos

    Captura de pantalla de un ejemplo de un gráfico de pandas

Puedes abrir consolas del shell de Odoo para experimentar con el registro de Odoo y con los métodos de los modelos de tu base de datos. También puedes leer o escribir de forma directa en tus registros.

Advertencia

Las transacciones se confirman de forma automática en una consola de shell de Odoo, esto significa que los cambios que hagas en los registros se aplican a la base de datos. Por ejemplo, si cambias el nombre de un usuario, el sistema lo actualizará en tu base de datos. Usa las consolas del shell de Odoo con cuidado en bases de datos de producción.

Puedes usar env para invocar modelos del registro de tu base de datos, por ejemplo, env['res.users'].

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