Commits

Pablo Caro Revuelta committed 8037716

Dia 5 del curso no-pyflakes no-pep8

  • Participants
  • Parent commits 64f5689

Comments (0)

Files changed (2)

Curso Técnico - Sesión 5.pdf

Binary file added.

curso_openerp.rst

 ==========
 
 Juan Ignacio Ubeda. Profesor
+Alfredo de la Fuente Muniain. Profesor
 
 Alejandro Santana (Empresa: Anubía en Galicia en Vigo) Arch linux
 Carlos Llamas Bruzzone. Datamatic (Uruguay).
 
 Me mandan un correo y puedo entrar en el moodle de openerp
 
+Terminal
+--------
+Añadir al sys.path tanto openerp como addons
+db, pool = openerp.pooler.get_db_and_pool('test_kitchen')
+
+
+[14:18] <pcaro> hi all
+[14:20] <pcaro>  anyone know how to get python shell of openerp? Adding "openerp" and "addonds" to pythonpath y can accesses my module model class, but then I need cursor and uid. I am a newbe trying practice with the orm ...
+[14:21] --> noaXess se ha unido a este canal (~noaXess@catv-165-002.tbwil.ch).
+[14:22] <flox> depending what you try to do, you can use ERPpeek to try things
+[14:24] <flox> http://pypi.python.org/pypi/ERPpeek
+[14:26] --> chegga se ha unido a este canal (~checker@pd95caab3.dip0.t-ipconnect.de).
+[14:28] <pcaro> flox, thaks for the link. I am only trying practice with the orm. I am learning. In django and zope I usually test using a python shell. Isn't common to do that in openobject develoment?
+[14:29] [Whois] flox es ~florentxi@unaffiliated/flox (florentxicluna)
+[14:29] [Whois] flox es usuario en los canales: #openobject
+[14:29] [Whois] flox está conectado vía verne.freenode.net (Newark, NJ, US).
+[14:29] [Whois] flox ha estado inactivo durante 4 minutos y 32 segundos.
+[14:29] [Whois] flox ha estado conectado desde 13-11-12 14:03:25.
+[14:29] [Whois] flox está conectado ahora como flox.
+[14:29] [Whois] Fin de la lista WHOIS.
+[14:31] <Marmotte> maybe you can try my patch, which adds a --interactive argument to the openerp server (it launches the openerp server, then falls into a standard python interactive shell)
+[14:31] <Marmotte> https://code.launchpad.net/~syleam/openobject-server/trunk-interactive_mode/+merge/92148
+[14:32] <Marmotte> I use it for development purpose :)
+[14:33] <flox> ERPpeek does it too :-)
+[14:33] <Marmotte> with the same syntax as in modules ?
+[14:34] <flox> it's not documented, I've to add an helper
+[14:34] <Marmotte> I quickly tested ERPpeek, don't really use it for now
+[14:34] <Marmotte> (but I know I have to use it more :D)
+[14:35] <pcaro> Thanks!! What a goog community!! ERPpeek looks like impresive. I will use in the future.
+[14:36] <flox> well, it can either connect through RPC or using "import openerp"
+[14:36] <flox> then I've to add an helper: get_pool = openerp.modules.registry.RegistryManager.get
+[14:36] <flox> (I did it locally, but not yet committed)
+[14:36] <Marmotte> ok :)
+[14:36] <flox> which allows to grab a "pool" object
+[14:37] <flox> then cr = pool.db.cursor(), and you can play with it
+[14:37] <flox> I did it already for troubleshooting
+[14:37] <Marmotte> I only work on 6.0, "import openerp" is not available on this version :)
+[14:38] <flox> this feature of ERPpeek is only tested in 6.1
+[14:38] <flox> (for other versions, it supports RPC connection)
+
 
 Descarga
 --------
 Es una buena práctica tener un "active"
 
 
-
+===========
 Día 3. 8/11
 ===========
 
     <filter .... context="{'grop_by':'year'}" domain="[]"
   </group>
 
+===========
+Día 4. 13/11
+===========
+
+Vamos revisando el memento técnico.
+
+El campo select no se usa mucho.
+
+El atributo translate=True, añade una banderita y eso da la opción de traducir el campo.
+
+En los campos binarios hay dos opciones en la vista.
+  * Por defecto aparece: seleccionar, abrir, guardar como y elminar
+  * En la vista pone widget="image" y aparecen icondos para guardar y tal y muetra la imagen.
+
+Campos reference: Se hace referencia a campos ya existentes usando las propiedades del campo original.
+
+Form elements
+-------------
+colspan, col: Por defecto openerp divide la pantalla en 4.
+invisible: campos que tienen que estar en las vistas, pero que sean invisibles para el usuario.
+  Tambien se pueden poner condiciones, if un campo no está creado poner estos campos invisibles, etc.
+password: tiene el incoveniente que en modo lista se ve texto plano!! Así que ocultarlo simpre en modo lista
+on_change: es de lo más usado.
+Prestar atención a los widgets como progessbar, many2may, email, etc
+Vemos uso de notebook y page
+
+Ejercicio: Módulo de cocina
+Ideas:
+
+* coste y precio se pude copiar del módulo de producto.
+* poner la biografía con un notebook y un page
+* Los cocineros no se relacionan con usuario, aunque es lo que se haría en un modelo
+serio
+
+Nos pasará el modulo como muestra.
+
+Los _name de las clases tienen que ser unicos así que se suele separar por puntos
+Ej: cooking.restaurant
+
+Herencias útiles:
+
+product_product. Producto.
+res.partner.address Direcciones de empresa.
+
+============
+Día 5. 15/11
+============
+
+Se presenta Alfredo.
+Nos envía un pdf
+
+Evento "on_change"
+------------------
+Los parámetros extra (despúes de self, cr, uid, ids)son fields.
+
+Explica dos atributos nuevos de los campos (ejemplo con lineas de coste y de investigación):
+domain: Indica una condición para le one2many. Sólo mostrará lineas con una condición
+attrs: Da atributos con condiciones, Ej: el atributo readonly (de la línea) será True si historical_ok is True.
+
+Es importante los domains y los attrs hayq que definirlos en dos sitios SIEMPRE.
+En el modelo y en la vista xml.
+
+Campo referencia
+----------------
+Se puede definir un grupo de objectos a los que puedo acceder, o crear etc a través del campo.
+Para definir los objetos a los que podemos hacer referencia, debemos de ir a ConfiguraciónObjetos de Bajo Nivel / Solicitudes / Tipos de referencia en solicitudes.
+Ver addons/sale/sale_data.xml
+Se indica una función en el atributo *select* para seleccionar el objecto a tratar.
+Siempre se suele usar la misma.
+Ojo: en las plantillas pone una lista en el select en lugar de la función.
+
+
+Campos calculados
+-----------------
+Nos explica los campos calculados siguiendo su documento
+
+
+Campos "related"
+----------------
+Copia el valor de un campo que esté en otra tabla
+Además del campo de realación hay que VOLVER A INDICAR en relation la tabla de la relación.
+
+
+Herencia
+--------
+
+De classes
+++++++++++
+Se heredan todos los atributos y los métodos.
+res.partner se refiere tanto a clientes como a proveedores.
+
+La nueva clase debe hereader de osv.osv y por convención se le pone el mimo nombre que la padre.
+Hay que poner el _inherit con el nombre del que queremos heredar.
+Ver ejemplo de añadir campo facebook.
+
+Nos va a indicar una nomenclatura.
+
+Ejemplo: en un one2mamy se llama el atributo con nombre de clase (con guiones) + '_ids'
+Si es una may2one es con sufijo '_id'
+
+Sobrescribir métodos. Si dos modulos sobrescribe lo mismo es por dependencias definidas el orden de carga.
+
+De vistas
++++++++++
+Una vista que hereda tiene un field indicando la herencia::
+
+    <field name="inherit_id" ref="carpetapadre.idVistaPadre" />
+
+carpetapadre: Es la carpeta del modulo. La que cuelga de addons Ej: acount.
+idVistaPade: El id del record. con model ir.ui.view y que tiene el tipo form
+
+Nomenclatura: las vista de herencia, se les pone el mismo id que del padre pero
+terminado en '_inh' (de inherid).
+
+En la arquitectura de la vista (fild arch) añado los campos nuevos y usamos el
+atributo position para indicar dónde va el nuevo campo::
+
+     <field name="campo1" position="after">
+        <field name="nuevocampo" />
+    </field>
+
+El valor de position puede ser: after, before o replace.
+Para ocultar un campo es poner position="replace"  sólo sin volver a definir::
+
+    <field name="campo1" position="replace" />
+
+Para meter algo que no sea un field, tengo que usar xpath.
+Nota el ejemplo usa un field, pero podría usar un group, o un button, para
+la seleccón de xpath::
+
+    <xpath expr="/form/group/field[@name='stock_id']" position="after">
+        <field name="journal_id" colspan="4"/>
+    </path>
+
+En xpath se suelen usar rutas relativas de xpath, con "//" dentro de la expresión xpath.
+
+
+Nomenclatura: Si hago módulos de extensión se suelen llamar son sufijo '_ext'
+y a veces con prefijo nombre de empresa.
+Los modulos igual: author_ext.py y author_view_ext.xml
+
+Nota: Alfredo recomienda tener ficheros de vistas separados.
+
 
 
 ==============
 El cliente no lo puedo usar desde el virtualenv, para ello lo lanzo con mi python de sistema.
 
 
+====================
+Instalacion de bazar
+====================
+
+En sistemas debian::
+
+    apt-get install bzr bzrtools
+
+Para interfaz visual QT (`qbzr <http://doc.bazaar.canonical.com/plugins/en/qbzr-plugin.html>`_.)::
+
+    apt-get install qbrz
+
+Plugin  `colo <http://doc.bazaar.canonical.com/plugins/en/colo-plugin.html>`_::
+
+    mkdir -p ~/.bazaar/plugins
+    if [ ! -d ~/.bazaar/plugins/colo ]; then
+        echo Installing bzr-colo
+        bzr branch lp:bzr-colo ~/.bazaar/plugins/colo
+    fi
+
+bzrtools
+========
+bzr shelve
+bzr unshelve
+bzr shelf ls
+bzr shelf show
+bzr shelf del
+