attakatara

El sitio del código de todos python, sql, xml …

Archivar para el mes “diciembre, 2015”

domain filter odoo

domain

Al manejar grandes flujos de información nos veremos en la necesidad de exportar la misma desde la base de datos (postgresql), es característico en odoo sobre campos relacionales del tipo m2o que tengamos que filtrar ese flujo de información es allí cuando el filtro domain nos es de gran ayuda.

Una condición simple en programación puede ser: si campo1=10

Para poder expresar la misma en Odoo se utiliza una sintaxis entre tuplas del tipo ———>  (‘field_name’, ‘operator’, value), donde “field_name” ser[a un campo válido de la BD (base de datos), o bien el nombre de un objeto en el modelo. “operator” entre los cuales tenemos: =, !=, >, >=, <, <=, like, ilike, in, not in, child_of, parent_left, parent_right (openerp/osv/expression.py), y por ultimo “value” que será un valor valido de comparación. Ahora bien nuestra condición inicial puede quedar de la siguiente manera: domain=[(‘field1′,’=’,10)] donde field1 debe coincidir con un campo en el modelo y 10 sera el valor. Aunque algunas veces podemos sustituir el value por otro campo lo que quedaria asi: domain=[(‘field1′,’=’,’field2′)] donde field1 y field2 son campos del modelo.

Otras condiciones de programación son aplicables a este filtro domain por ejemplo la AND, expresiones como: SI field1=5 y field2=10, la traducción de la misma para Odoo queda: domain = [(‘field1′,’=’,5),(‘field2′,’=’,10)],  otro ejemplo de este operador: domain = [(‘field1′,’=’,field3),(‘field1′,’=’,field3)] en el ultimo se sustituye el value por campos en el modelo.

para el operador OR: SI field1=5 or field2=10, con el filtro domain nos queda: domain = [‘|’, (‘field1′,’=’,5),(‘field2′,’=’,10)] y sustituyendo value por campos: domain = [‘|’, (‘field1′,’=’,field3),(‘field1′,’=’,field3)]

Por supuesto también es admisible el condicionamieto multiple una expresión como: SI field1 = 5 or (field2 ! = 10 and field3 = 12) quedara como: domain = [‘|’,(‘field1′,’=’,5),(‘&’,(‘field2′,’!=’,10),(‘field3′,’=’,’12’))]

Anuncios

BPMN (modelado de procesos de negocios)

Es una notación gráfica estandarizada que permite describir procesos que se traducen de un flujo de trabajo (Workflow) [1],  y apartir de los mismos planificar estratégias que van desde la planificación hasta la programación de códigos informáticos.

Bpmn fue en principio desarrollado por la organización Business Process Management Initiative (BPMI), y es actualmente mantenida por el Object Management Group (OMG) [2], después de la fusión de las dos organizaciones en el año 2005.

Su proposito es propocionar una notación estandar para que todos los involucrados en el proyecto, haciendo un simil podriamos decir que se asemeja a UML en forma y finalidad. En su forma se maneja a través de diagramas simples con un conjunto muy reducido de elementos gráficos y cuatro categorías básicas de elementos (lo que en UML manejamos como librerías):

  1. Objetos de Flujo: Eventos, Actividades, Rombos de control de flujo (gateways)
  2. Objetos de Conexión: Flujo de Secuencia, Flujo de Mensaje, Asociación
  3. Carriles de nado (swimlanes): Piscina, Carril
  4. Artefactos: Objetos de Datos, Grupo, Anotación.
ObjetosBpmn

Objetos de flujo

 

Carriles de nado

Carriles de nado

 

En el sitio de Bpmn [3], podemos acceder a una guia de ejemplos en formatos libres que nos puede dar una idea de que va el estandar.

Para quienes hemos trabajado con UML sin duda algunas el editor de diagramas DIA [4], es una solución de software libre que nos permite acceder a una librería con todos los componentes del estandar, pues sera grato saber que BPMN no le es extraño a nuestro editor favorito (y en python 😀 [5]):

BPMN en el editor de diagramas DIA

BPMN en el editor de diagramas DIA

Blokdiag [6], es otra herramienta que esta basada en python y nos puede ayudara a realizar diagramas BPMN de manera sencilla y eficaz.

Un diagrama BPMN completo tendrá un aspecto aproximado al siguiente:

BPMN-DiscussionCycle

Para todos los que quieran profundizar sobre el tema les recomendamos la siguiente guía en español: BPMN 2.0 Manual de referencia y guía Práctica. 

BpmnGuia

 

 

[1] https://es.wikipedia.org/wiki/Flujo_de_trabajo

[2] http://www.bpmn.org

[3] http://www.omg.org/cgi-bin/doc?dtc/10-06-02

[4] https://wiki.gnome.org/Apps/Dia

[5] https://www.python.org

[6] https://pypi.python.org/pypi/blockdiag/

 

 

Guía rápida de git

Para poder tener un control sobre las versiones de nuestros códigos basta con conocer media docena de comandos git lo que nos permitirá comenzar a colaborar con otros desarrolladores en la red y mantener un orden estructurado de nuestros aportes sea bien a proyectos personales como a trabajos en colectivo.

Otro de los puntos más relevantes del uso de sistemas de control de versiones abiertos es cumplir con la libertad 3 Libertad para contribuir a tu Comunidad. Hacer copias de tus versiones modificadas y distribuirlas entre los demas. Que por lo general se torna en la barrera paradigmática más dificil de vencer.

Lo cierto es que conociendo los comandos:

git init

git add

git commit

git push

Ya puedes contribuir sobre repositorios ubicados en un servidor publico como lo es github o sobre tus propios servidores de control de versiones según sea el caso.

En attakatara, hemos puesto a tu disposición un Cheat Sheet (guía de referencia), de los comandos más usados para git lo cual es de suma utilidad sobre todo en las etapas de adopción de la herramienta. Gracias a los compañeros de git.or.cz adaptamos su tabla de referencias para traerlas a nuestros lectores. Esperando sea de su agrado.

git-cheat-sheet-large-attakatara

 

Gracias al apoyo del amigo del blog @jelitox, pudimos hacernos del la misma tabla referencial (Cheat Sheet), en español, un trabajo que se le atribuye a Carlos Guerrero y que adaptamos para poner a disposición de los lectores.

attakatara_Cheat_Sheet_espa

Navegador de artículos