Problema con carpeta Durus-3.9

No me funciona… me sale

rafael@rafael-desktop:~/Escritorio/pyarq-presupuestos$ sudo python pyArq-Presupuestos
Traceback (most recent call last):
File “pyArq-Presupuestos”, line 48, in
from Gtk import gui
File “/home/rafael/.local/share/Trash/files/pyarq-presupuestos/Gtk/gui.py”, line 56, in
from Gtk import importFiebdc
File “/home/rafael/.local/share/Trash/files/pyarq-presupuestos/Gtk/importFiebdc.py”, line 36, in
from Generic import durusdatabase
File “/home/rafael/.local/share/Trash/files/pyarq-presupuestos/Generic/durusdatabase.py”, line 25, in
from durus.file_storage import FileStorage
ImportError: No module named durus.file_storage
rafael@rafael-desktop:~/Escritorio/pyarq-presupuestos$

La carpeta Durus-3.9 que he bajado del sitio web no contiene ninguna carpeta llamada durus.file_storage ni tampoco algun archivo con nombre FileStorage

Falta instalar Durus

Ese error sale porque no está instalado el módulo de python durus. Ahora mismo es una dependencia y no funciona el programa sin este módulo, aunque ahora sólo lo uso para hacer pruebas, quizá no tendría que haberlo hecho imprescindible, pero bueno, de momento así está hasta que lo cambie. Es el problema de usar paquetes que no están entre los módulos básicos de python. Este ni siquiera está en el repositorio de las distribuciones al menos en Debian no está.

Para instalarlo tienes que bajarlo de está web. (Creo que eso ya lo hiciste)

Después o bien lo instalas en tu sistema siguiendo la instrucciones del paquete que están en el fichero INSTALL.txt:

  • Para poder compilar una parte del módulo necesitaras tener instalado un compilador, por ejemplo gcc. En ubuntu/Debian: $ sudo apt-get install gcc
  • Descomprimir el tarball: $ tar zvxf Durus-3.9.tar.gz
  • Entrar en la carpeta del módulo: $ cd Durus-3.9
  • Ejecutar el comando de instalación como root:
    Por ejemplo con sudo: $ sudo python setup.py install --record installed.txt

O bien puedes en vez de instalarlo simplemente copiar la carpeta Durus-3.9 dentro de la carpeta de mi programa pyarq-presupuestos. Y renombrar de «Durus-3.9» a «durus» para que así funcione la importación del módulo (esto es lo que te falta hacer, ya que no lo explique en las instrucciones). Quedaría entonces pyarq-presupuestos/durus/(el contenido de Durus-3.9). Si miras dentro veras que hay un fichero file_storage.py que es el que pretende importar mi programa. El problema que de esta forma durus será poco eficiente pues tiene una pequeña parte del código escrito en C que necesita compilarse para ganar eficiencia.

Una cosa más. No ejecutes pyArq-Presupuestos como root, hazlo sin el sudo. Que aparte que no es necesario (que eso ya es suficiente razón), es un programa Beta y puede hacer cosas inesperadas (aunque espero que no)

Ya complete un poco las instrucciones para la instalación de durus, espero que ahora sea más fácil.

Ya me dirás si te funciona ahora.

Vale. Ahora si me funciona.

Vale. Ahora si me funciona. No instalé nada, solo renombré la carpeta a durus como indicaste.
Aparece una ventana con solo dos menus. He buscado en Internet y descargué un fichero bc3 para probar el programa:
http://www.juntadeandalucia.es/obraspublicasytransportes/www/jsp/estatic...
Este tiene 2.5MB y he buscado otro de 21MB. Los he cargado los dos en el programa simultáneamente y el software ha respondido bien.
Bueno, supongo que faltan muchas cosas por implementar, por ejemplo cuando vas desglosando las partidas, falta algún botón o comando para retroceder.
Y cuando se acciona el comando "partir vista izquierda/derecha" la subdivisión solo genera un espacio vacío, no una ventana.

Te adjunto imágenes del programa funcionando.

http://www.tuimg.com/images/screenmkm.png
http://www.tuimg.com/images/screenlll.png
http://www.tuimg.com/images/screenjtj.png
http://www.tuimg.com/images/screenapa.png
http://www.tuimg.com/images/screenmfm.png

RE: Vale. Ahora si me funciona.

Bien, no había probado con esa base de precios.
Parece que la ultima versión es de septiembre de 2009: http://www.juntadeandalucia.es/viviendayordenaciondelterritorio/www/jsp/...
He probado y me dan algunos errores del tipo;
El código «--BCCA##» tiene caracteres inválidos.
En las especificaciones FIEBDC 2007 dice claramente que en el campo código no se pueden usar más que los caracteres que define y el guión no está incluido, luego es inválido. Pero en las especificaciones 2002 que es las que usa la base no dice nada al respecto así que si que es valido el guión, y cualquier otro carácter.
El programa lo que hace es eliminar los caracteres no validos y quedarse con el resto del código y parece que así funciona, lo malo es si hubiera colisión con otro nombre de concepto, en este caso no hay colisión. Creo que es un error de los redactores de la base de precio y de Presto 8.91 que es el programa que lo ha generado y que debería tener en cuenta que en las nuevas especificaciones ese carácter no es válido en los códigos.
¿Si les mando un mensaje a los de la junta de Andalucia me harán caso? xD

Por lo que yo he probado, cargar las bases simultáneamente hace que tarde más en leerlas que si las carga una detrás de otra, tengo pensado que el programa espere a empezar a cargar la segunda cuando termine la primera, pero aún no hay nada hecho.

Faltan muchas cosas por hacer, más de las que están hechas.
Para subir de nivel hay que hacer clic sobre cualquiera de las cabeceras del panel de descomposición, excepto la de la de los números de orden que hace que se seleccionen todos los conceptos. Es también como lo hace Presto.
Para hacer de un concepto el concepto actual hay que hacer doble clic sobre cualquiera de sus campos en el panel de descomposición.
Pero si que es cierto que hace falta un botón en la barra de botones para ir al concepto raíz y otro para subir de nivel e ir al concepto padre del actual, para hacer el programa mas intuitivo.

El asunto de que al patir la vista se queda vacío ya me había dado cuenta pero no se aún muy bien como arreglarlo, el problema es que cada vista necesita un espacio mínimo para visualizarse, necesita que quepan todos los elementos de la barra de encima de las cabeceras de los conceptos, la que muestra el tipo de vista y los botones, si haces mas grande la vista verás que ya se hace visible. Supongo que el programa tendría que calcular cual es ese espacio mínimo que necesita y ampliar la vista automáticamente a ese tamaño si es menor.
Aunque ¿que hacer si realmente no caben las dos vistas en la ventana? Ampliar el tamaño de la ventana me parece algo intrusivo para el usuario, y desactivar la opción de partir vista si no caben dos vista me parece algo limitante, así que no se que hacer al respecto.

El programa parece estable.

El programa parece estable. Como sugerencia diría que agregaras botones básicos de navegación para desglose de las partidas. Con eso tendrías un funcional visor de archivos bc3, es decir una aplicación con una utilidad práctica concreta a pesar de estar en desarrollo. He visto que en la red se acostumbra usar aplicaciones para convertir los archivos bc3 a excel para poder verlos. Con pyArq como visor aquello ya no sería necesario. (Lo ideal sería agregar a pyArq una función de exportar a PDF o función de impresión y así tendrías un visor y conversor básico completo, que despierte más atención de los usuarios para descargarlo).

Objetivos.

Lo de poner los botones es bastante sencillo, lo iré haciendo y lo publicare en los siguientes envíos de cambios.

Lo de exportar a PDF ya no es algo tan sencillo de hacer, crear pdfs es bastante complicado, en python se usa el módulo reporlabs que tengo que aprender a utilizar.

"Este documento se pone a disposición de usuarios y empresas, con la única condición de que cualquier implementación informática del presente formato debe recoger tanto la entrada como la salida de datos."

Antes de exportar datos en otros formatos tengo que crear la exportación a FIEBDC,
Es una condición que imponen en las especificaciones del formato para que todo programa que lea el formato también lo pueda crear y así no se "apropie de los datos", me parece algo razonable, así que es lo siguiente que haré después de conseguir que lea bc3.

Sería entonces cambiar en el orden de los objetivos: 0.2 y 0.3

  • 0.2 Creación y edición de nuevos presupuestos.
  • 0.3 Generación de informes en formato xhtml, pdf y odf

Botones

Acabo de mandar el último cambio. He añadido unos botones para la navegación:
  • Ir al registro superior/inferior: Para pasar a los registros "hermanos" superior e inferior del actual.
  • Ir al registro previo/posterior: Para ir a los registros antes visitados, al estilo de los de un navegador web
  • Ir al registro raíz del presupuesto.

Tanta flecha abruma un poco xD.
Faltaría de implementar desactivar o ocultar los botones/menús cuando no hacen nada.

Para poder hacer actual un registro sigue teniéndose que hacer doble clic en la descomposición sobre cualquiera de sus campos (excepto el índice) o con el teclado seleccionar con las flechas y pulsar enter.

Para poder hacer actual el concepto padre del actual sigue teniéndose que hacer clic sobre cualquier cabecera de la descomposición. Pensé en poner otro botón para esto pero ya me parecen muchos... ¿que opinas?

Estoy pensando también en poner una ruta con botones al estilo de la de los navegadores de archivos (presupuesto/capítulo/unidad/elemento básico) para poder seleccionar los registros que preceden al actual con un click, aunque no se si en la misma barra de botones superior o en una barra de estado.

Lo de "partir vista izquierda/derecha" creo que lo solucionare ampliando la ventana si es necesario. Espero que no sea demasiado molesto.

Comentario a los últimos ajustes

Lo primero es confesar que no había usado antes programas de presupuestos. Los había probado solamente, así que a lo mejor mis opiniones no apuntan a la correcta usabilidad de un usuario experimentado en Presto u otro.

Sobre los botones, en efecto creo que ahora son muchos. El último botón TOP creo que está bien, pues te remite al punto de partida desde cualquier nivel (perdona, en chile por cada item, hablamos de "partidas". Sin embargo creo que el primer par de botones superior/inferior están un poco de más. A lo mejor estoy equivocado, pues no soy usuario entendido, pero me imagino estas bases de datos como un directorio del tipo raiz, este se va desagregando y desagregando como las raices de una planta. Tu sigues un camino y eso te va orientando, pues recuerdas el item anterior. Pero si saltas entre raices paralelas (o partidas paralelas) creo que corres riesgo de perderte. A mi me pasó que comencé en una partida desagregando y desagregando y apreté por error uno de los botones sup/inf y salté a otra partida distinta y me perdí...
Tal vez sea más entendible, si se quiere, poner un campo que despliega una lista de partidas principales (disculpa, para mi es fácil pedir cosas jajaja) Así si uno esta viendo un detalle de una partida y quiere ver el desglose de otra partida paralela o hermana, sin necesidad de hacer click en botón TOP , simplemente despliega la lista y escoge la partida en cuestión.
En todo caso, yo creo que basta básicamente con 3 botones tipo navegación. Unos te permiten avanzar y retroceder al desagregar las partidas y el botón TOP para ir al principio rápidamente. Más botones pueden ir si así se estila en este tipo de programas, pero pueden usar alguna gráfica distinta para que sea más clara la función. U otra posición.
Como ayuda en la usabilidad, he visto que algunos programas despliegan en el borde inferior de la ventana notas explicando las opciones disponibles. Algo así como: BotónDer: avanzar detalle partida / BotónIzq: retroceder detalle partida / UP: partida anterior / Down: partida siguiente.

Sobre la ruta de botones estilo navegador no te entiendo mucho como sería.

Sobre partir las ventanas tengo un comentario que lo he notado ahora recién. Me di cuenta que si parto la ventana, ya sea vertical u horizontalmente y luego cierro alguna de las particiones, no puedo volver a partir la ventana nuevamente. Se deshabilita la opción.
Por otro lado, me parece bien lo de iniciar con una ventana del programa más amplia. Yo sugeriría también que las particiones vista izquierda/derecha (¿Porque izquierda/derecha?) fueran justo a la mitad. Así funciona la ventana incluso con la actual área de la ventana de inicio.

Te felicito por este proyecto que realizas. Estaré al tanto de cualquier novedad, pero también puedes avisar a mi correo si lo deseas.

Re: Comentario a los últimos ajustes

Yo la verdad que tampoco he hecho un uso intensivo de programas de mediciones, el único que he usado algo es Presto. Me vienen muy bien tus comentarios, así puedo confirmar o no lo que yo también pienso. Por ahora eres el único «beta tester» de mi programa, al menos el único que hace retroalimentación (feedback)

Yo también pienso que los botones superior/inferior no sirven de mucho, los puse para probar porque están en Presto y eran muy fáciles de implementar.
En vez de lo de la lista desplegable para seleccionar otros conceptos, creo que es mejor hacer una vista entera en la que mostrar una descomposición en árbol de los conceptos. Y que solo muestre el código y el resumen de los conceptos. Anteriormente probé a poner una descomposición en arbol en la vista «Descomposición» en vez de una lista, pero resultaba bastante confuso. Más adelante tengo pensado hacer un panel lateral ocultable e independiente de las vistas, en el que entre otras cosas también podrá ir una vista árbol.

Creo que dejaré:

  • Los botones de navegación anterior/posterior, añadiéndoles también un menú desplegable con el histórico de cada uno. Con los iconos de las flechas laterales.
  • El un botón para ir a la raiz, con el icono top
  • Añadiré un botón para subir un nivel (ir al concepto padre del actual) con el icono de una flecha hacia arriba up

Un botón para bajar un nivel (ir a uno de los conceptos hijo del actual) no lo veo muy útil porque primero es necesario seleccionar este de entre todos los que se muestren en la descomposición y lo mismo cuesta hacer doble clic (o enter) para entrar en el en vez de hacer clic para seleccionarlo.

Para describir los botones puse tooltips, es decir los mensajes emergentes que aparecen si se deja un poco el puntero sobre los botones, aunque quizá no describen bien lo que hace el botón xD.

Barra de ruta me refiero a algo así. Es decir una lista de botones biestado en el que el que esta seleccionado representa al registro actual. Pondría como texto el código del concepto y un mensaje emergente con el resumen descriptivo del concepto en cada botón.
Creo que el referente en esto de navegar por estructuras de datos en forma de árbol son los administradores de archivos. Como nautilus, konqueror, dolpfin...

Efectivamente hay un problema al partir la vista, cerrar una, y luego volver a partirla, mirare a ver que pasa con eso.

Lo del tamaño de la ventana, pues creo que lo ideal sería que el programa recuerde el tamaño para abrirse tal como se cerró la ultima vez, así se ajustaría a los deseos del usuario. Pero para poder hacer esto me hace falta implementar que se guarde la configuración del usuario en un archivo. Del mismo modo también tengo idea de establecer unas vistas predeterminadas, es decir una forma de ordenar los paneles distintas para cada trabajo a realizar, y que también el usuario pueda guardar las suyas, esto también lo hace Presto. Así lo de partir los paneles y ordenarles sólo lo debería hacer una vez el usuario, luego guardar la forma en que están y después poder recuperar el orden desde el menú, por eso intento de momento que la interfaz sea lo mas flexible posible. ¡Qué difícil que es explicar esto con palabras!

Pienso que pocos botones se

Pienso que pocos botones se va con la funcionalidad básica de un comienzo. A medida que el programa gana complejidad se van agregando botones. Si logras que tu programa se mantenga ni muy lejos ni muy cerca de los programas tradicionales como presto, creo que destacará como una alternativa con más valor.

Sobre obtener más feedback sugiero que publiques el proyecto en otros repositorios como Google code o Sourceforge. Además bien se puede dar avisos en foros de arquitectura (yo no estoy en ninguno, jajaja) y en foros de informática. Yo he publicado un link a pyArq presupuestos en dos sobre linux (que es donde está corriendo el programa). En todo caso, con estas cosas hay que ser paciente. Estamos hablando de un programa que no es de los más usados. A mi me parece que los desarrolladores poco atienden los programas desacostumbrados. Apoyan más el software que requieren usar, y no hacen mucho por aquel que es de otro campo. Así que en un comienzo, seguramente habrá poco feedback. A lo mejor si se difunde directamente entre arquitectos usuarios de software libre, como estos chicos que Agnu. Acá hay una lista: http://foroarqsl.creatuforo.com/grupos-de-arquitectos-que-apoyan-el-soft...
También creo que ayudará si logras sacar pronto una versión para windows. Así habrá más potenciales usuarios en probarlo.

Una cosa que se puede consultar es sobre la opinión de los usuarios de los otros programas. No se si hay foros donde la gente opina sobre Presto. Si las hay, se podría recoger opiniones publicadas allí.

En windows se puede usar pero tengo que probarlo

Si, es un problema común en muchos programas, van creando más y más funcionalidades y el programa se vuelve muy complicado de usar. Espero que al mio no le pase eso, pero bueno de momento más simple no puede ser porque apenas hace nada.

Publicar el código en otro repositorio no creo que sea buena idea, sería complicar el asunto, si alguien empieza a colaborar en un sitio y otro en otro se convertiría en un lío. Solo con mantener sincronizados los distintos sitio ya sería un poco lío. Bitbucket creo que es un buen sitio para un proyecto en python con mercurial. Aún así me costo decidir por uno de los tres.

Yo tampoco estoy habitualmente en ningún foro de arquitectura. Pero de todas formas prefiero ser paciente que hacer spam por ahí.

Interesante la lista de arquitectos usuarios de software libre. ¡Estoy yo también!.

En windows debería funcionar igual que lo hace en linux. Pero tengo que probarlo para hacer un manual de instalación y ahora mismo no tengo ningún pc con windows a mano..., se lo tendré que pedir al vecino xD

Sería mas o menos instalar:

Después descargar mi programa, igual que en linux. Mejor con Tortoisehg para poder actualizarlo.
Y luego durus, que sino ahora mismo no funciona. (Para poder instalar durus haria falta un compilador C, pero bueno esto es opcional)
¿Mucho lio?. Con lo fácil que es apt-get... xD
Lo suyo sería hacer un paquete instalador .exe o .msi con todo incluido pero no tengo ni idea de como se hace.

En mac en teoría también se podría instalar aunque mas complicado, supongo que con X11 de apple y GTK+ y PyGTK desde MacPorts . También tengo que probar.

pyArq Prespuestos en Windows

Ya he probado la instalación del programa en Windows, y he creado una página para describir el proceso.

El proceso es algo más simplificado que el descrito en el mensaje anterior, pues se usa un paquete instalador «todo en uno» que contiene GTK+, pyGTK, pyCairo y PyGObject.

Aparte de lo descrito en el mensaje anterior, es preciso instalar también pywin32 para que Durus funcione.

Fallos arreglados

En las ultimas actualizaciones ya arreglé el bug referente a que no se veía la vista al partir izquierda/derecha así como el bug que no dejaba volver a partir la vista después de cerrar una de ellas antes.

Vale, lo he probado abriendo

Vale, lo he probado abriendo dos archivos y ha funcionado perfecto me parece. Los botones también se ven más ordenado e intuitivos.
Buen trabajo.