Documentos de Académico
Documentos de Profesional
Documentos de Cultura
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A grandes rasgos, con Odoo hay 3 modalidades para crear módulos:
Hay que diferenciar en cargar un módulo ya totalmente desarrollado y listo para producción, que crear uno,
para esto último es conveniente loguearse como usuario administrador y después desde el menú principal [] ir a ajustes
y activar el modo desarrollador (sale un icono en forma de `bicho´ en la barra superior), con esto se tiene acceso a
opciones técnicas y además si todavía no estan definidos los permisos se debería subir de privilegios desde el menú del
`bicho´ a superusuario, así se podrá acceder a tablas y menús en desarrollo.
Observación:
En Odoo hay una jerarquía de privilegios de acceso y usabilidad para controlar la seguridad dentro del ERP
Odoo.
Hay 2 grupos principales de usuarios…
1º TIPO:
a) Al loguearse como usuario con privilegios en PostgreSQL y Odoo, se convierte en administrador.
b) Después desde Ajustes, puedes activar en “modo desarrollador”.
c) Desde el menú del `bicho´ a superusuario.
2º TIPO:
a) Usuario básico sin privilegios.
b) Usuario básico con privilegios para un uso concreto de un módulo concreto.
c) Usuario básico con privilegios de administrador de un módulo concreto.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Un módulo en Odoo ¿qué es?
Básicamente en una carpeta dentro de la carpeta Addons que cumpla con una estructura de subdirectorios y ficheros
que Odoo espera encontrar.
Básicamente hay dos tipos de ficheros tipo python (xxx.py) que define la lógica y el resto que define las características
del módulo.
Nota: reglas para sincronizar los cambios, dentro de la estructura compleja del ERP Odoo, no se actualiza de forma
inmediata. Por ello hay que tener darle una ayudita al sistema, y si se ha añadido algún fichero python o un módulo
completo mejor reiniciar el sistema
(como superusuario root)
En particular.
Observación:
Después activar el “modo desarrollador”, y de reiniciar a Odoo.
Desde Aplicaciones → “actualizar lista de aplicaciones”.
Se ve:
El nombre de la carpeta es el nombre del módulo (en rojo)
El nombre de verdad del modulo (el bonito), definido 'name': 'xxx',
Nota:
dentro de las carpetas hay ficheros xxx.pyc son unos ficheros compilados de los scripts de python, estos de
pueden borrar que los reconstruye Odoo. Así lanza más rápido los módulos en las sucesivos reinicios. Además de usar
mucha cache.
Las modificaciones del resto, al menos, si la aplicación ya está instalado, se deberá actualizarla como desarrollador del
menú de tres puntos de la aplicación.
Construyendo un módulo desde cero:
Se crea, en este ejemplo, un módulo de nombre modulo_sencillo y su estructura básica de pondrá en una carpeta con
ese nombre dentro de addons.
__init__.py
se llama a otros .py con la lógica del programa y sobre todo a models que define las clases que
define las tablas que usará PostgreSQL.
__manifest__.py
donde se adorna el módulo con información de sus creadores e información de su estructura.
Adorna:
‘name’ : su nombre bonito y como aparecerá en el menú Padre (Principal [])
‘secuencia ‘: el orden de aparición entre las aplicaciones.
‘versión’ : lo mira cuando se actualiza.
‘depends’ : lo que depende, mínimo el módulo base (conversación)
‘categorias’ : para filtrar en las búsquedas de aplicaciones, o agruparlo en menus
En aplicaciones cuando filtras lo puedes buscar por la categoría al que pertenece
ojo, en las búsquedas lo hace por la versión castellanizada de nuestro módulo.
Importante:
‘data’ : donde se pone "la ruta" de los ficheros que describen los elementos de Odoo: menús, vistas y acciones,
seguridad, y algún css para adornar el look (no obligatorio).
En las vistas las acciones y los menús pueden describirse en varios XML por separado.
Como en cada carpeta con ficheros de python, siempre se repite la misma estructura …
__init__.py El script principal, te indica que otros .py carga
en muestro ejemplo modelo1.py → las tablas,
Estas tablas, como en cualquier base de datos, se pueden usar programas externos para verlas o analizarlas como psql,
Pgadmin4 , para verlas, se busca en la ruta donde las guarde Odoo.
--> bbdd -> schemas-> public-> tablas
Nota:
Se aconseja un convenio para nombrar las tablas, como: nombre del modulo al que pertenece punto nombre indicativo
de los campos que quiero que tenga la tabla.
Ej: ‘tools.averia’
modelo1.py
_name : nombre de la tabla ‘modulito.quehace’ , después los demás campos que quieras.
name : obligatorio el campo, que será campo clave, aconsejable required (lo fuerza como requerido)
se usa para relacionar las tablas entre ellas, como campo clave `required=True´
dentro de () se toma como la etiqueta.
Ojo: el orden de las tablas importa, al menos en la versión actual de Odoo.
Seguridad
Recordemos que en el __manifest__.py, se hace referencia a la carpeta security donde puede haber varios
ficheros que definen la seguridad, pero como mínimo:
security/ir.model.access.csv
Si necesitas definir un grupo o grupos para el acceso a tu modulo, seria el otro fichero ej: tools_security.xml
(que deberías indicarlo en el __manifest__.py ) también en la carpeta security.
Views, Vistas:
en la carpeta views se colocan los ficheros que van a definir los menús, las vista y las acciones.
En nuestro ej:
Es un típico fichero XML (el xml no necesita fabulaciones como python pero queda bonito),
donde se puede observar que los menús se referencian con menuitem, que para indicar los submenús debe llevar el
parámetro parent (que hace referencia de su menú padre).
Además, las acciones se definen en los record donde se declaran desde la acción más simple que sería el
despliegue un submenú cuando haces clic, hasta acciones más complejas que lanzan vistas tipo tree (árbol que desplega
la información como una lista) o tipo form (de formulario, para introducir datos. )
Los demás datos, nos definen que tablas se usarán, como se verán y como se desplegarán (no voy a quedarme con los
detalles).
Nota: el menú padre será el que no hace referencia a otro con `parent´
Desde la óptica de la sesión remota:
Login:
Desde Aplicaciones,
haces clic en “Actualizar
lista de Aplicaciones”
‘application’ : True,