/PINEBOO. QUÉ ES?
PINEBOO. QUÉ ES? 2019-09-17T17:11:44+00:00
Print Friendly, PDF & Email

Pineboo es una adaptación del software de gestión ERP Eneboo al lenguaje Python para darle proyección de futuro ante la falta de soporte de algunas herramientas con las que se creó Eneboo (Scripts de QSA, equivalente a QT3 y ECMAScripts-JavaScripts).


Créditos:


Pineboo – Manual de supervivencia

Se ha redactado este manual para las dudas más comunes sobre este proyecto de investigación, y ayudar a que cualquiera pueda poner en marcha y realizar las pruebas que desee con el mismo.

ACTUALIZACIONES A INTEGRAR:

  1. RAMA DE DESARROLLO DE PINEBOO «dev-total-refactor» separada de la «master» para desarrollos EN JUNIO DE 2019
  2. add python minimum version as 3.6 EN JULIO DE 2019
  3. MIGRACIÓN DE GITHUB A GITLAB EN JULIO DE 2019
  4. NUEVA VERSIÓN 0.13 A 3 DE AGOSTO DE 2019 POR GITLAB SEGÚN SLACK
  5. SUBIDA VERSIÓN 0.18 ?¿?¿ A 2 DE SEPTIEMBRE DE 2019 A GITHUB ?¿? SEGÚN SLACK
  6. PROBAR PINEBOO:

https://test.pypi.org/project/pineboo/

 

Fuentes:


Indice:

  1. ¿Qué demonios es Pineboo?
  2. Aproximaciones existentes
  3. Nuevas dependencias con Python3
  4. Por qué se mantiene Qt4 y no se introduce ya Qt5
  5. Cosas que hay que hacer ahora (obsoleto)
  6. Alcance actual de Pineboo (obsoleto)
  7. ¿Si cargo Pineboo en mi base de datos de producción, puedo perder datos?
  8. Cómo poner en marcha Pineboo
  9. Pineboo en Windows
  10. Pineboo y Eclipse(obsoleto, esto ya no se usa)
  11. FLScriptParser y Git-Subtree (obsoleto)
  12. Utilización (obsoleto)
  13. Cosas que se pueden probar en Pineboo (obsoleto)
  14. Cosas que realizar a medio plazo (obsoleto)

Haz clic aquí para volver al índice


1. ¿Qué demonios es Pineboo?

Pineboo es un proyecto de investigación, donde no se pretende obtener un producto final, sino sentar una base y crear las tecnologías necesarias para el día de mañana crear realmente el/los producto(s) que se deseen.

Lo que se desea es contestar a la frase: «Qué necesitamos para poder ejecutar un proyecto de módulos de Eneboo sin Eneboo?»

Para ello, se crea un micro-proyecto (o mejor dicho, pico-proyecto) que solo cubre lo mínimo necesario para cumplir esa frase, y estrictamente esa frase.

Es posible que exista más de una versión de Pineboo, cada una con distintas aproximaciones y tecnologías. Actualmente, en el momento de escribir esta documentación, solo existe una.

El nombre de Pineboo viene de Pico-eneboo, y hace referencia que es un proyecto de investigación, pensado más como una pequeña utilidad que como un programa real.

 

Haz clic aquí para volver al índice


2. Aproximaciones existentes

Solo existe una única aproximación a la ejecución de proyectos de Eneboo:

Pineboo – Migración a Python3 y nueva hoja de ruta

He decidido migrar todo a Python3. El motivo es que Python2 está cerca de ser abandonado. No hay nuevas releases, y a día de hoy empieza a haber más gente programando cosas nuevas con python3 que con python2 (aunque siguen muy igualados)

Para el día en que Pineboo pueda serle útil a alguien, probablemente Python2 ni siquiera sea una opción. Es posible que antes del 2018 python2 sea obsoleto y complicado de instalar en sistemas actuales.

 

Haz clic aquí para volver al índice


3. Nuevas dependencias con Python3

Prácticamente lo mismo que antes, pero los paquetes se llaman python3-xyz.

      • Python3.3 o posterior
      • psycopg2
      • pyqt4
      • lxml
      • ply

 

(OBSOLETO, LO QUE SIGUE YA NO SE USA) Adicionalmente, hacemos uso de un paquete llamado «future», que es el que me ha ayudado a hacer la transformación con una herramienta llamada futurize.

Future se usa ahora en el código para que Python2.7 pueda ejecutar nuestro código de python3 y que ambos hagan lo mismo. (Emulando python3)

Esto hace que algunos ficheros requieran de esta librería con Python3, pero creo que es una dependencia que se puede eliminar en el futuro (cuando casi nadie use python2). De todos modos para Python3 creo que no hace casi nada.

$ sudo pip3 install future

Por otra parte he usado pylint para parsear el código… mientras era python2. Con Python3 no consigo instalar pylint en este sistema. Supongo que se arreglará en versiones futuras.

 

Haz clic aquí para volver al índice


4. Por qué se mantiene Qt4 y no se introduce ya Qt5

Qt3 es muy distinto de Qt4. Además, Eneboo tiene modificaciones grandes a Qt y a QSA, haciendo imposible seguir una guía estándar de actualización.

Al menos, con Qt4, tenemos un set de controles «compatibles» con Qt3. Se conocen como Qt3Support.

Pero, con Qt5 estos módulos desconozco si continúan existiendo, pero creo que no. Qt5 está pensado para que la gente migre fácilmente aplicaciones de Qt4. Pero esto aún ni siquiera es una aplicación Qt4.

Ubuntu no distribuye para 14.04 un módulo pyqt5 para python2. Y por otra parte Qt5 aún está empezando y tiene mucho margen para crecer. Siempre se podrá migrar más tarde.

 

Haz clic aquí para volver al índice


5. Cosas que hay que hacer ahora (OBSOLETO)

      • Integrar la parte de flscriptparser que usamos dentro de pineboo. (* hecho)
      • Modificar el parseador para que escriba código Python3 (* hecho)
      • Agregar una opción «-c» para indicar la conexión por consola. (* hecho)
      • Crear un fichero de utilidades y mover algunas funciones (* hecho)
      • Modificar el diálogo de conexión para que funcione
      • Erradicar el uso de ficheros xml para proyecto, dejar la opción, pero como obsoleta
      • Refactorizar algunas funciones que se han vuelto un poco grandes
      • Cargar al inicio los ficheros principales de cada módulo
      • flparser no reconoce valores de array ni objetos insertados in-line (x = []; y = {}) (* falta solo los arrays [] )
      • flparser no reconoce funciones anónimas (lambdas)
      • flparser no reconoce el operador ternario ( x ? y : z ; y if x else z ) ( *hecho)
      • los cursores deberían realizar las consultas con cursores de servidor por defecto
      • Falta que la aplicación trabaje con los modos de registro. De momento solo usa los master/search

 

Haz clic aquí para volver al índice


6. Alcance actual de Pineboo (OBSOLETO)

Pineboo es capaz de conectarse a cualquier base de datos de Eneboo y realizar las siguientes tareas:

  • Listar los módulos
  • Listar las acciones posibles para un módulo
  • Iniciar el OpenDefaultForm() para una acción dada

Al iniciar una acción, el formulario es convertido al vuelo a Qt4 (con errores) y el script QS es convertido a Python y ejecutado (con muchos más errores). Se lanza el init() automáticamente.

Las referencias entre módulos (flfacturac.iface.XYZ) funcionan con carga de módulo retrasada.

La API de QSA y Eneboo está apenas empezada. En su mayoría la API existente son funciones y clases «fake», que desde el script, parece que funcionen pero no realizan ningún trabajo. Esto permite ejecutar los scripts, pero no opera correctamente.

 

Haz clic aquí para volver al índice


7. ¿Si cargo Pineboo en mi base de datos de producción, puedo perder datos?

Sí, pueden perderse datos. Los experimentos con gaseosa.

Dado que es un motor experimental, puede que no realice el trabajo que se le mande, sino otro inesperado. Un script podría de forma inadvertida borrar registros por fallos en la API implementada. Y aquí nadie se hace responsable de esto.

Lo mejor es usarlo en bases de datos de desarrollo para evitar problemas.

Actualmente, en el momento de escribir esta documentación, Pineboo no puede permutar la base de datos, porque carece de las API’s para ello.

No obstante esto podría cambiar en el futuro y estar la documentación desactualizada.

 

Haz clic aquí para volver al índice


8. Cómo poner en marcha Pineboo

Seguir las instrucciones de:

Si a alguien le apetece colaborar, este formulario es un buen inicio.

Veréis una lista de módulos y al pulsar salen las acciones.

Haz clic aquí para volver al índice


9. Pineboo en Windows

Se ha programado Pineboo pensando en que sea ejecutado en Windows. Como está en fase de desarrollo y Aulla trabaja en Linux, a veces no funciona, pero se han hecho pruebas y funciona bien….lo que está hecho…

Para poner flscriptparser2 en el PATH a lo mejor es más conveniente cambiar el PATH de windows. (esto ya no es necesario, porque está integrado…)

Por otra parte todos los paquetes necesarios tienen que ser instalados uno a uno en windows. Mira el listado de dependencias.

 

Haz clic aquí para volver al índice


10. Pineboo y Eclipse (obsoleto, esto ya no se usa)

Para integrar Pineboo con eclipse. Despues de instalar Eclipse añade los repositorios de PyDev y Egit

PyDev Help > install New Software > Add Repository

http://pydev.org/updates

Egit Help > install New Software > Add Repository

http://download.eclipse.org/egit/updates

Ahora que tienes los compementos instalados, Create un fork de https://github.com/deavid/pineboo (OBSOLETO)

Despues importa ese repositorio Git.

Import > Git > Project from Git > Clone URI

https://github.com/AquiTuUsuario/pineboo

 

Haz clic aquí para volver al índice


 

11. FLScriptParser y Git-Subtree (OBSOLETO)

FLScriptParser y Pineboo son dos proyectos que comparten muchas cosas. De hecho gran parte de la funcionalidad es gracias a esta librería. Como ambos proyectos necesitan lo mismo, necesitamos que cuando se actualice desde un lado, aparezcan los cambios en el otro. Por no hacer cosas dos veces.

Git Subtree es un comando que permite actualizar y enviar actualizaciones filtrando por cierta carpeta. Es, en objetivo, muy similar a git submodules. Pero la gran ventaja es que el resto de usuarios no va a necesitar aprender nada de todo esto, pues lo tendrán todo integrado sin más. (Con submodules todo el mundo tiene que saber usarlos, aunque no vayan a tocar nada de la librería)

Esta documentación está aquí principalmente para recordarme la sintaxis de pull y push. Para el resto de usuarios, pueden hacer pull con estas instrucciones, pero no pueden hacer push a no ser que utilicen también un fork de FLScriptParser.

 

Haz clic aquí para volver al índice


12. Utilización

Muy sencillo, primero se agrega el remoto y se hace fetch. Aunque no tenga nada que ver, ni coincidan carpetas. Yo utilizo «flp» como nombre de remoto.

Agregar el remoto:

$ git remote add flp git@github.com:deavid/flscriptparser.git $ git fetch

Como ya está todo inicializado, no necesitamos nada más inicialmente. Aparte de esto, se puede:

Actualizar nuestra versión de flscriptparser:

$ git subtree pull –prefix pineboolib/flparser/ flp master

Enviar una nueva actualización de flscriptparser:

$ git subtree push –prefix pineboolib/flparser/ flp master

La inicialización de la carpeta se hizo del siguiente modo:

$ git subtree add –prefix pineboolib/flparser/ flp master

Los comandos «pull» y «push» soportan –squash , para reducir todos los commits en uno solo. Como tampoco hay tantas modificaciones en esta librería y también las modificaciones se pueden considerar como «propias», he preferido quitar el squash y ver todo el histórico.

La «pega» es que no deberían haber commits que modifiquen flparser y otra cosa del proyecto a la vez, en el mismo commit.
Haz clic aquí para volver al índice


13. Cosas que se pueden probar en Pineboo (OBSOLETO)

La opción –help ofrece un listado de opciones, algunas pueden ser interesantes.

Por ejemplo, para facilitar las pruebas existe el switch -a que ejecuta directamente una acción determinada. (Abre el formulario master de esa acción)

Otra opción interesante es –no-python-cache que fuerza a regenerar los ficheros de python transformados aunque ya existan. Útil si estamos jugando con flscriptparser.

Se puede probar a abrir el master de artículos y pulsar el botón de copiar artículo. No copia el artículo pero sí pregunta la nueva referencia y hace el bucle de copia.

Si el master de artículos (u otro master) tiene checkboxes u otro método de filtrado rápido, también funcionarán y la tabla se verá correctamente filtrada.

Si el master realiza comprobaciones sobre la fila seleccionada, también funcionan. Por ejemplo al albaranar un pedido puede advertirnos de que ya está servido.

Hay que tener en cuenta que la API de FLSqlCursor está implementada parcialmente. La mayoría de señales no se envían aún y muchas de las funciones aún no tienen implementación.

FLTableDB tiene una implementación mínima. Sólo se enlaza con el cursor por defecto y poco más. Esto es suficiente para ejecutar muchos de los ejemplos.

El resto de objetos de Eneboo no existen o tienen una implementación «hueca», es decir, los métodos llegan a existir, pero no hacen nada.

Los formularios con convertidos al vuelo, y aún requiere este proceso de muchos retoques. Las características más usadas funcionan, pero la gran mayoría de cosas que se pueden hacer en un formulario de Eneboo aún no son intepretadas correctamente. No obstante, debería ser suficiente para ejecutar muchos de los formularios master que existen.

Para ejecutar los scripts se usan tres capas de compatibilidad: flcontrols, qsaglobals y qsatypes. En algunos casos no está aún claro cómo debería comportarse por ejemplo un Array.

Los ficheros son convertidos a python y guardados junto al fichero QS de cache. Por ejemplo, las conversiones de masterarticulos.qs se pueden ver en la ruta tempdata/cache/flfactalma/file.qs/masterarticulos/.

 

Haz clic aquí para volver al índice


14. Cosas que realizar a medio plazo (OBSOLETO)

  • Más API’s de Eneboo clonadas
  • Diálogo de conectar que funcione
  • Establecer conexión manual desde consola usando formato URI
  • Apertura de formularios de registro (Browse)
  • Creación de switch «–read-only-mode», donde los commitBuffer y commit sean inocuos.

 

Haz clic aquí para volver al índice


error: Content is protected !!