3. Desarrollando con Odoo (1). XXXXX completar Instalación con Docker simple. Conexion a la BD por sesión y por DBEaver

Seguiremos a Inma Gijón

Utilizaremos docker simple pues docker compose falla.

Ojo: Desinstalar docker (pero no eliminar los volumenes lógicos) y reinstalarlo a la última versión!!!

0. La BD postgres

0.1 Instalar la BD en docker


OJO: Esto es una pequeña introducción de como instalar postgres y ver la BD.
Vamos a crear el contenedor. Para ello en una consola de comandos:

#1. Crear el contenedor de postgres
docker run -d -v odoo-db:/var/lib/postgresql/data --restart="always" -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo -e POSTGRES_DB=postgres --name db postgres:latest

Como se puede ver, el usuario es "odoo", el password es "odoo" y la BD "postgres

Si queremos ver la BD tenemos que entrar en dicho contenedor como root y ejecutar psql... pero inidicando que accedemos como usuario=odoo y BD=postgres, sinó da este error :


psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL:  role "XXXX" does not exist

Siendo el XXXX el nombre del usuario con el que hemos entrado. Si entramos como root, aprecera role "root".


0.2 Acceder a la BD desde dentro del contenedor en una sesión interactiva

Para evitar el problema accedemos as: primero ejecutamos el contenedor como root y luego, una vez dentro como usuario root  ejecutamos   psql -U odoo postgres  (siendo odoo el usuario y postgres la BD)

#1. Ejecutar una sesion interactiva en el contenedor de postgres
docker exec -it --user root 518(3 primeros caracteres) /bin/bash

#2. abrir psql con usuaio odoo sobre la BD postgres
psql -U odoo postgres

#3. Una vez dentro sale el prompt "postgres-#". listamos la BD con \l
postgres-# \l

#4. Muestra:
   Name    | Owner | Encoding | Locale Provider |  Collate   |   Ctype    | ICU Locale | ICU Rules | Access privileges 
-----------+-------+----------+-----------------+------------+------------+------------+-----------+-------------------
 postgres  | odoo  | UTF8     | libc            | en_US.utf8 | en_US.utf8 |            |           | 
 prueba    | odoo  | UTF8     | libc            | C          | en_US.utf8 |            |           | 
 prueba01  | odoo  | UTF8     | libc            | C          | en_US.utf8 |            |           | 
 template0 | odoo  | UTF8     | libc            | en_US.utf8 | en_US.utf8 |            |           | =c/odoo          +
           |       |          |                 |            |            |            |           | odoo=CTc/odoo
 template1 | odoo  | UTF8     | libc            | en_US.utf8 | en_US.utf8 |            |           | =c/odoo          +
           |       |          |                 |            |            |            |           | odoo=CTc/odoo
(5 rows)

# 5. Nos salimos
q

# 6. Nos conectamos a la bbdd "odoo"
postgres=# \c odoo
# You are now connected to database "odoo" as user "postgres # 7. Comados para listar # 7.1 \d lista todo todo # 7.2 \dn lista esquems # 7.3 \dt lista tablas # 8. mostrar las tablas y vemos que aprece una llamada res_country_state odoo=# \dt # 9. Ver los campos de una tabla (No olvidar el ";" del final !!! odoo=# select column_name from information_schema.columns where table_name='res_country_state'; # column_name #------------- # id # country_id # create_uid # write_uid # create_date # write_date # name # code #(8 rows) # 10. Ver la información de la provincia de Valencia odoo=# select id, name, code, country_id from res_country_state where code='V'; # id | name | code | country_id #-----+---------------------+------+------------ # 464 | València (Valencia) | V | 68 # 575 | Tierra del Fuego | V | 10 #(2 rows)

Con esto vemos que podemos acceder a la BD sin problemas.

0.3 Acceder a la BD por DBEaver 

Vamos ahora a acceder con dbeaver. Para ello vamos a VSCode y vemos la IP del contenedor docker. Nos aseguramos que el contenedor de postgres está en marcha. En Networks-Bridge y en botón derecho inspect vemos la IP que en este caso es 172.17.0.2. 


NOTA: La IP de postgres también se puede ver en el log de odoo 

2024-05-15 13:03:11,682 1 INFO ? odoo: database: odoo@172.17.0.2:5432 



En DBEaver cremos una conexión a postgres con usuario odoo, contraseña odoo y la BD postgres


Ahora en dicha BD creanos un nuevo script SQL que nos muestra las BD

SELECT datname FROM pg_database;

y nos salen las BD mostradas en el punto anterior. (postgres, prueba, template1, template0 y prueba01)


Ahora podemos crear una nueva conexión pero esta vez con la BD "prueba" que es la que nos interesa, y podemos ver toda la información de las tablas



1. Instalar odoo y postgres mediante "simple" docker (sin docker compose)

Primeramente creamos en una carpeta (igijon), estas 3 subcarpetas: 

  1. config_odoo que guardará el fichero odoo.conf
  2. dev_addons que es donde se guardaran los módulos a instalar
  3. log para tener los logs y ver los fallos producidos

Creamos el fichero de configuracion (odoo.conf) dentro de config_odoo

[options]
addons_path = /mnt/extra-addons
data_dir = /var/lib/odoo

csv_internal_sep = ,
logfile = /var/log/odoo/odoo-server.log


Para los contenedores se crearan discos virtuales de docker no mapeados:

  1. odoo-db:/var/lib/postgresql/data para postgres
  2.  odoo-data:/var/lib/odoo -->NO!! pues se corrompe facilmente els sistema

Veamos como actuamos desde una consola de comandos para crear los servidores POSTGRES y ODOO en docker. OJO: El contenedor de postgres ya lo hemos instalado en el apartado anterior! 

Para crear el contenedor Odoo mapearemos los siguientes discos virtuales:

  1. /home/eduard/MyDocker/DockerFiles/igijon/odoo-data:/var/lib/odoo
  2. /home/eduard/MyDocker/DockerFiles/igijon/config_odoo:/etc/odoo
  3. /home/eduard/MyDocker/DockerFiles/igijon/dev_addons:/mnt/extra-addons 
  4. /home/eduard/MyDocker/DockerFiles/igijon/log:/var/log/odoo
Además por si acaso se ha hecho instalaciones fallidas, indicarle el master password con:
-e ODOO_MASTER_PASS=odoo

#1. Crear el contenedor de postgres(si no lo hemos credo antes)
docker run -d -v odoo-db:/var/lib/postgresql/data --restart="always" -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo -e POSTGRES_DB=postgres --name db postgres:latest


#2. Crear el contenedor de odoo 16 
#   y mapear los discos virtuales: /etc/odoo  /mnt/extra-addons  /var/log/odoo
#   y crear un disco virtual para los datos de odoo que no tenga acceso normal odoo-data:/var/lib/odoo
#docker run -d -v odoo-data:/var/lib/odoo -v /home/eduard/MyDocker/DockerFiles/igijon/config_odoo:/etc/odoo -v /home/eduard/MyDocker/DockerFiles/igijon/dev_addons:/mnt/extra-addons -v /home/eduard/MyDocker/DockerFiles/igijon/log:/var/log/odoo -p 8069:8069 --name odoo --link db:db -t odoo:16.0
docker run -d -e ODOO_MASTER_PASS=odoo -v /home/eduard/MyDocker/DockerFiles/igijon/odoo-data:/var/lib/odoo -v /home/eduard/MyDocker/DockerFiles/igijon/config_odoo:/etc/odoo -v /home/eduard/MyDocker/DockerFiles/igijon/dev_addons:/mnt/extra-addons -v /home/eduard/MyDocker/DockerFiles/igijon/log:/var/log/odoo -p 8069:8069 --name odoo --link db:db -t odoo:16.0


Se crearán contenedores y el sistema les dará un nombre. Se usaran los 3 primeros caracteres del contenedor

2. Dar los permisos necesarios


#1. Entrar en el contenedor como root y ejecutando un bash de comandos

docker exec -it --user root <nombre_contenedor_creado(solo 3 primeras letras)> bash

#2. cambiar los permisos a 777 de los directorios accesibles

chmod 777 -R /etc/odoo
chmod 777 -R /mnt/extra-addons 
chmod 777 -R /var/log/odoo
chmod 777 -R /var/lib/odoo


3. Crear un enlace simbólico desde nuestra carpeta de trabajo de VS Code


Ir a VS y en la consola crear un simbolic link a la carpeta de addons de odoo de  Inma Gijon. Para ello nos situamos en ~/MyOdoo/Control-Presencia/my-python-programs/GTT y ejecutamos:


# Creamos link
ln -s /home/eduard/MyDocker/DockerFiles/igijon/dev_addons ODOO_IGIJON

siendo ODOO_IGIJON el nombre de la carpeta sibólica


4. Definir la BD

Al inidcar en el navegador http://localhost:8069  se va a la definición de la BD cuya URL es http://localhost:8069/web/database/manager y debemos tener en cuenta que:

  1. La Master Password es la contraseña que hemos dado al crear el contenedor de Postgres donde dimos usuario="odoo" y password="odoo"
  2. Cremos una BD nueva que llamamos "ximo-db"
  3. Crear el usuario que será el administrador con la contraseña de entrada al sistema.
  4. Dar lenguaje español y si se quiere se cargan datos de prueba.


Ahora ya nos pide la entrada al sistema:

5. Si no podemos acceder al modo desarrollador.

Entrar en:

 http://localhost:8069?debug=1

5. Generar la clave API

\




Esta clave es la que se utiliza para llamar a la api.

OJO: Hacer una nueva entrada de como llamar a la API

5. Instalar aplicaciones que ya lleva odoo

Primero vamos al menu -Ajustes y seleccionar modo desarrollador y despues..

Vamos al menu - Aplicaciones. Pasamos a vista de lista y marcamos:

  1. contactos
  2. empleados
  3. proyecto
  4. asistencias
  5. ausencias
Y le damos al boton de arriba a la izquierda "Instalar" y esperamos un buen rato a que termine de islatalar (cunado aparece la ventana de conversaciones)

6. Instalar de la OCA

Buscar en google "odoo partner second lastname"

seleccionar version 16



Se puede ir al github y descargar o descargar el zip del enlace.

OJO: Creará 2 carpetas dentro de la carpeta que se crea al descomprimir.

Copiar subcarpetas: partner_fisrtname y partner_second_lastname directament dentro de la carpeta addons de odoo 

├── config_odoo
│   └── odoo.conf
├── dev_addons (carpeta addons de Odoo)
│   ├── partner_firstname
│   ├── partner_second_lastname
└── log

Vamos al menú de aplicaciones y ya deben aparecer dichas aplicaciones si:

- Estamos en modo desarrollador (cucaracha)

- Le damos a Actuaizar Lista de Aplicaciones

- Eliminamos el Filtro de aplicaciones (pues són módulos y no aplicaciones)



 Si no salen las cosas, hay que rearrancar el contendor de odoo.


Igualmente hay que instalar de la OCA "partner external maps" que permite utilizar Google maps para ver direcciones




7. Crear un nuevo módulo


#1. Entrar en el contenedor como root y ejecutando un bash de comandos

docker exec -it --user root <nombre_contenedor_creado> bash

#3. Ir al directorio /mnt/extra-addons y ejecutar odoo scaffold ximoapp01

cd /mnt/extra-addons 
odoo scaffold ximoapp01

Y veremos que se ha creado una carpeta llamada ximoapp01 .



Comentarios

Entradas populares de este blog

4. Desarrollando con Odoo (2). Introducción a modulos, vistas, modelos .. Añadir dependencias externas de Python a Odoo

8. Desarrollando con Odoo (6). Herencia de clase en modelos. Herencia de vistas. Operaciones numeradas en Odoo ??

26. Desarrollando con Odoo (21). IMPORTANTE: Entorno de desarrollo. Recapitulaciones del capítulo 8 (Development, Test and Debug).