Académique Documents
Professionnel Documents
Culture Documents
Creación del
Acerca de las licencias.... ......25
Añadiendo a Ia ruta addons ....................2S
Actualización de un módulo .."..................25
Model Constrains
Definición de la interfaz de usuario con archivos XML.... ................78
Elementos de menú ..".........." 79
Acciones de ventana
Contexto y dominio..
tipo............
Tratamiento de varias vistas del mismo .................^.. 84
Vistas de documentos empresariales .... .^. . ........85
El encabezado Header............"."." ......86
Cuerpo (Sheet) ..................87
Titulo y subtítulos .."".........88
Área de botones inteligentes . . .... ...84
Agrupación de contenido en un formulario ............ Bg
Plantillas de informes
Ubuntu Server
Uno de los primeros problemas que tenemos al instalar Ubuntu Server es acostumbrarnos
a ulilizar la interfaz de usuario en modo texto. El utilizar esta interfaz al estilo del UNIX
original, nos permite que Ubuntu Server sea muy ligero, consuma menos memoria y
menos disco y permita ejecutarse en servidores dedicados donde el ratón, el teclado y la
pantalla normalmente no están presentes.
Si queremos mantener estas ventajas sin utilizar la interfaz gráfica de usuario de GNOME
o KDE, tendremos que conocer algunos comandos básicos para poder trabajar en el
servidor.
§i un directorio no está vacío no es posible borarlo con Ia orden rmdir. La orden rm nos lo
permite con la opcíón *R bonando el contenido del directorio especificado y todos sus
subdirectorios de forma recursiva.
$ rm -R <directaria>
Hay que tener mucho cuidado con la orden ya que bora todos los archivos y directorios
dentro del directorio a borrar.
Buscar archivos reconiendo árboles de directorios especificados por las rutas, evaluando
de izquierda a derecha las condiciones de búsqueda. Además se pueden especificar
acciones sobre los resultados obtenidos:
Mostrar el nombre del directorio en el que uno se encuentra situado (print working
directory). Se dice que ese directorio es eldirectorio de trabajo:
$ pwd <opcones>
l;'.i.:l
li:i;*
'1,rj:j,1
Introducción al Python
Números
El signo igual ('='¡ es usado para asignar un valor a una variable. Además, ningún
resultado es mostrado antes del siguiente apuntador interactivo:
>>> width - 2A
>>> fieigñf = 5*9
>>> width " height
900
Las variables deben ser "definidas" (asignanda un valor) anfes que puedan ser usadas, u
ocunirá un effor:
Hay un apoyo para punto flotante; los operadores con operandos de tipo mixto convierten
un operando entero a punto flotante:
>>>3*3.75/1.5
,>)Pó J./3/ l.C
7"5
>>> 7.0 / 2
35
Cadenas
manipular cadenas, las cuales pueden ser
estar encerradas en comillas simples o comilla
Las cadenas pueden ser concatenadas (pegadas juntas) con el operator * , y repetidas
con *:
ok
'string'
ok
'stríng'
inválida
>>> word{41
,A'
>>> word[O:Z]
'He'
>>> word[Z:4]
'lp'
Listas
Python conoce un número de valores de dato compuesto, usados para agrupar otros
valores. El más versátil es la lista, el cual puede ser escrito como una lista de valores
separados por coma (items) entre corchetes" La lista de ítems no necesitan todos tener el
mismo tipo.
Como índices de cadena, la lista de índices comienzan en 0, y las listas pueden ser
parciales, concatenados y más:
>>> a[0]
'spam'
>>> a[3]
1234
>>> a|Zl
100
>>> afl:-1]
{eggs', lAAl
>>> a{:21+ {bacon', 2*21
fspam','eggs','bacan', 4l
>>> 3*afSJ + {Boo!'l
>>> a
{spam','eggs', I 00, I 2341
>>> a{21= a{2} + 23
>>> a
{'$pam','eggs', 1 23, 1 2341
... a[1:1]
>>> a
{t 23,'bletclt','xyzzy',
ltbv, vretvr.,
^rLLt
2341
, 1t Lval
>>> # /nserf (a copy of) itsetf at the beginning
>>> A[:0] = ¿
>>> a
[1 23,'bletch','xyzzy', 1 234, 1 23,'bletch','xyzzy', 1 234]
>>> # Clear the list: replace all items with an empty list
>>> a{'l * il
>>> a []
>>> len(a) 4
Declaraciones lF
Quizás eltipo de declaración mejor conocido es la declaración if. Por ejemplo:
print'Zera'
".. elif x == 1: :i¡,.
prínt'Single' .tw
... else.'
print'More'
.." More
r:;;i:?l
Las declaraciones for en Python difieren un poco de lo que podrÍas usar en Lenguaje C o
en Pascal. Bastante más que siempre iteractúa sobre una progresión aritmética de
números (como en Pascal), o dándole al usuario la capacidad para definir ambos, el paso
de interacción y la condición optativa (as C), Python para declaración, iteractúa sobre los
ítems de cualquier secuencia (una lista o una cadena), con el fin de que aparezcan en la
secuencia. i! Íi!i¡:it|*. +¡illi!,i.:
Definiendo funciones
Podemos crear una función que escriba Ia serie de Fibonacci a un límite arbitrario:
Es simple escribir una funcién que retorne una lista de números de ia serie de Fibonacci,
en lugar de imprirnirlos:
result = il
a, b= A,1
while a < n:
result.append(a) # see beiow
á,b=b,a+b
retum resu/f
Diccionarios
Otro tipo de dato útil construído dentro de Python es el diccionario. Los diccionarios se
consideran algunas veces en otros lenguajes como "memorias asociatívas" o 'arreglos
asociativos". Diferente a secuencias, que son ordenados por un número de rango, los
dÍccionarios son ordenados por clave, los cuales pueden ser de cualquier tipo; fas
cadenas y números siempre pueden ser claves.
Un par de llaves {} crean un diccionario vacio. Colocando una lista de claves separados
por coma: los valores pares dentro de las llaves agrega una clave inicial: valores pares al
diccionario; este también es el modo en que los diccionarios son escrilos en la safida.
>>> for i, v in
print í, v
ó t¡,
I
2
# passwd odoo
Para mantener las cosas ordenadas, vamos a trabajar en un directorio iodoo-dev dentro
de nuestro directorio personal.
$ whoarni
odoo
$ echo $HOME
/home/odoo
Ahora ejecutaremos el siguiente script para instalar Odoo desde el código fuente en
Debian/Ubuntu system.
lnstalar actualizaciones
$ sudo apt-get update
$ sudo apt-get upgrade
lnstalar Git
$ sudo apt-get install git
lngresa al directorio
$ cd -iodoo-dev
lnstall Wkhtmltopdf
Al final, Odoo debe estar listo para usar. El símbolo *' es un acceso directo para nuestro
directorio personal {por ejemplo, ¡'ht:¡ir*l*ri**). La opción il;i -l} 11.ii le dice a Git que
descargue explícitamente la rama 11.0 de Odoo. La opción ,-depir: * 1 le dice a Git que
descargue sóls la última revisión, en lugar del historial completo de cambios, haciendo
que la descarga sea más pequeña y más rápida.
$ -/odoo-devlodooiodoo-bin
De forma predeterminada, las instancias Odoo escuchan el puerto 8069, por lo que si
apuntamos un navegador a ixipil,'<*i¡"**ci*r'l-s*ruid*p.:*i]ñ'J, llegaremos a estas
instancias. Cuando lo accedemos por primera vez, nos muestra un asistente para crear
una nueva base de datos, como se muestra en la siguiente captura de pantalla:
, -:.
'1'
D{tsbi€G l&rae
Eltgl¡
Patserd
?.
't
Enshsh j
i-l Load d*ir*orsfafhfr data {the*h ihi.t b*l }0 €trat*fti* *ds*l
Como desarrollador, tendremos que trabajar con varias bases de datos, por lo que es más
conveniente crearlas desde la línea de comandos, así que aprenderemos cómo hacerlo.
Ahora presione Ctrl + C en el terminal para detener el servidor Odoo y volver al prompt de
comando.
Para crear una nueva base de datos, utilice el comando i:i"*fti*dt]. Vamos a crear una
base de datos de demostración:
$ createdb demo
Para inicializar esta base de datos con el esquema de datos Odoo, debemos ejecutar
Odoo en la base de datos vacía usando la opción :
$ -/odoo-dev/odoo/odoo-bin -d demo
Esto tomará un par de minutos para inicializar una base de datos de demostración, y
terminará con un mensaje de registro INFO en el log, Modules loaded.
Si está hospedando Odoo en una máquina virtual, puede que tenga que configurar
algunas imfiguraé.,ibrres de red para poder acceder a etla desde su sistema hosi. La
solución r4¿s simple es cambiar el tipo de red de la máquina virtual de NAT a Bridged.
Con esto, e*;¡i|{,¡g.f$¡'de compartír la dírección lP del host, la máquina virtual invitada tendrá
su propia dirección lP. También es posible utilizar NAT, pero eso requiere que configure el
reenvío de puertos para que su sistema sepa que algunos puertos, como 8069, deben ser
manejados por la máquina virtual. En caso de que tenga problemas, esperamos que estos
detalles le ayuden a encontrar información relevante en la documentación del software de
virtualización elegido.
ii r,,,t
{fi1¡¡
{rp4§t*a
al? Iit
*_JHi
NOTA:
Es importante notar que las bases de datos de Odoo son incompatibles entre las
versiones principales de Odoo. Esto significa que si ejecuta un servidor Odoo 11 contra
una base de datos creada para una versión principal anterior de Odoo, no funcionará.
El trabajo de migración no trivial es necesario antes de que una base de datos pueda ser
usada con una versión posterior del producto.
El servidor Odoo soporta bastantes otras opciones. Podemos comprobar todas las
$ .lodoo-bin -help
Aquí, tamhién usamos la opción --stop-after-init para detener el servidor después de que
termine sus aeciones. Esta opcién se utiliza con frecuencia cuando se ejecutan pruebas o
se solicita ejecutar una actualización de módulo para comprobar si está instalada
conectamente.
Esto mostrará todas las opciones de configuración disponibles con sus valores
predeterminados. Su edición será efectiva la próxima vez que inicie una instancia de
Odoo. Escriba q para salir y vuelva a la prompt.
El acceso a nuestra instancia utilizando una ventana del navegador que se ejecuta en
modo privado puede ayudar a evitar algunos de estos problemas.
Otra buena práctica es habilitar un filtro de base de datos en la instancia del servidor para
á§egurarse de que sÓlo permite las solicitudes de la base de datos con la que queremos
trabajar, ignorando todas las demás. Esto se hace con la opción -db-filter. Acepta una
expresión regular que se utilíza como filtro para los nombres de base de datos válidos.
Para que coincida con un nombre exacto, la expresión debe comenzar con un ^ y terminar
con $.
Por ejemplo, para permitir sólo la base de datos de demostración utilizaríamos este
comando:
'§lr.-1ir
¡. .. .,-rj,.t-.1 -
. '
.. .
¡.jill!:I
,)'..
$it1§.
'-.,,..
', ". :,a
-'| r ';i -. .,. , ,'
1.".i , '..J1:,:.1.
' ! t.-;'l
..,,:
ir,,'i':::,!l
.ili¡
::il i'ii:!-'
¡l§ii'
.'ar::iij
it$:§
1:.:;¡t§*
'¡'!,i
'.':
',¡
I
_¡ i':
:ti i,:"r,: ii-,r ;^,,^
i t:'i:l i::;; i;::r:i:,i ir ij;'i
r
§*:B :r§ 5rir, 8,e.{f th{} }É*ctrf : §,{*aá
*S44'* eB'§§*,rT:4*,es§ lslih {su¡
!rÍ*ildÉi
S% ff..ffino,,.r',.-,*,r:I
NOTA:
La opcién del menú Técnico nos permite inspeccionar y editar todas las confíguraciones
Cdoo almacenadas en la base de datos, desde laintertaz de usuario hasta la seguridad y
otros parámetros del sistema.
Hacer nuevos módulos disponibles en una instancia de Odoo para que puedan instalarse
es algo que los recién llegados a Odoo suelen encontrar confusos. Pero no tiene que ser
asi, así que vamos a desmitificarlo.