Q-Guide: Nuevo frontend con PyQt4 para la base de datos de ETECSA.

Saludos Comunidad:
Hace unos días releyendo un artículo de @Ph4nt0m sobre una aplicación que hizo para hacerle consultas a la base de datos de ETECSA, llamada etecsax. Estuve buscando el código fuente de la aplicación ya que me parece genial, y sinceramente, quería tomar varias ideas para otro proyecto que tengo en mente(del cual ya tendrán noticias), pero desgraciadamente no pude hallarlo. O el autor original no compartió el código fuente o está bien escondido. Si alguien lo tiene a mano agradecería su publicación.
Bueno, para no dilatar mucho, quiero presentarles a Q-Guide, la cual es otra aplicación para realizar consultas a la susodicha base de datos de ETECSA(si es legal o no, ya se habló de ese tema acá). Q-Guide está enfocada en un diseño simple, punto. Nada de campos para búsquedas complejas ni nada de eso(no quiero satanizar a etecsax, que incluye la facilidad de búsqueda por expresiones regulares, pero ni mi madre ni mi novia quieren saber nada de expresiones regulares). Q-Guide aún está en fase de desarrollo(@dhunter y quien escribe sacamos algunos segundos de nuestro tiempo para hacerle ajustes), y para todo aquel que quiera contribuir pues aquí les dejo el código fuente:

Descargar Q-Guide

Y además se encuentra hosteada en GitHub:

https://github.com/codeshard/Q-Guide

Si usted, usuario de GUTL, quiere contribuir, solo necesita hacer un pull-request en GitHub o, en su defecto, ponerse en contacto con este servidor(@Ozkar) vía correo para incluir las funcionalidades o cambios que desee o solo para criticarla(es bienvenido en ambos aspectos).

Especificaciones:

Q-Guide está programado usando el lenguaje de programación Python(testeado usando la versión 2.7.5) y las bibliotecas gráficas Qt4(versión 4.8.6), y los bindings de Python y Qt4 PyQt4. Q-Guide está liberado bajo la Licencia Apache en su versión 2.0.

Como ejecutarlo?

Pues sencillo, asumo que tienen en su poder la base de datos de ETECSA, la cual por lo general se llama etecsa.db. Copian ese fichero para dentro de la carpeta database de la raíz de la aplicación con el nombre etecsa.db. En caso de que este paso falle les saldrá este error:

Error de Q-Guiide cuando no encuentra la base de datos.

Error de Q-Guide cuando no encuentra la base de datos.

Luego desde una terminal ejecutar

$ python q-quide.py
Recuerden,dentro de la carpeta database, copian la base de datos de ETCSA, con el nombre etecsa.db

Modo de uso:

Q-Guide consta de una interfaz sencilla y muy intuitiva(diseño que vino de manos de @dhunter). Consta de los campos Nombre, Número y Dirección, los cuales actuarán como parámetros en su búsqueda. Y solamente dos (2) botones, los cuales deciden si la búsqueda será por teléfonos fijos o teléfonos móviles.
Q-Guide tiene la posibilidad de ejecutarse en la bandeja del sistema(systray), forma útil de tener la aplicación ejecutándose en su sistema.

Capturas de pantalla:

Ventana principal

Ventana principal

 

Resultados de una búsqueda.

Resultados de una búsqueda.

qguide-systray

Menú contextual de la bandeja del sistema.

Pues ya saben GUTL, comentarios abiertos…

Futuro:

  • Versión para Windows y paquetes para GNU/Linux(debs, rpms).
  • Documentar el código.
  • Compatibilidad con Python 3.
  • Cambiar de PyQt4 a PySide por temas de licencia.
  • Nuevo set de iconos y artwork.
  • Optimización de consultas e incluir histórico

¿Te resultó interesante? Compártelo ...



Ozkar

Publicado por Ozkar

http://codeshard.github.io/ » Forma parte de GUTL desde el 6 diciembre, 2011. Soy uno ahí, no seas como yo...

Este artículo tiene 17 comentarios

  1. Muy buena solución. Se la facilitaré al colega. Yo sigo utilizando EtecsaDroid. De paso (Off-topic) alguien sabe donde obtener el código fuente de esta APK ??

    Salu2

  2. @Ozkar, ya descargue la app, hoy mismo le hecho un ojo. Si quieres, dejame tu correo para enviarte el codigo fuente de etecsax. Ultimamente se le han hecho unas cuantas mejoras como por ejemplo, en la velocidad de busqueda. Ahora funciona igual con python2 que con python3, con PyQt4 o con PyQt5, en GNU/Linux y en Windows (no he probado, pero deberia funcionar tambien en MacOSX).

    • Puedes escribirme a ozkar (at) elechol (dot) une (dot) cu. Vamos a unir esfuerzos, al final esta app la hice para hacer uso de la UI que había propuesto @dhunter.

    • está bueno eso del «canal usb», resulta que a mi se me demora un mundo, antes me había dado a la tarea de hacer un front-end para eso pero solo la hice para Win*** y funciona bastante rápido.

      Saludos

      • A mí también se me demora la app, pero creo que es algo de la base de datos, algún lock o algo de las DB en SQLITE. Afirmo esto porque inclusive con el SqliteMan se me ‘marea’.

      • Yo igual, una de las cosas que le hice a la BD fue un Vacuum y un Reindex, no noté mucho cambio en cuanto a velocidad pero por lo menos me bajó de peso como 11 megas.

        • Yo también le hice todo eso. Pero nada, sigue con la misma gracia. No tengo idea de que puede estar causando esto. Agradecería alguna luz.
          PS: Otra cosa que se me ocurrió es cambiarle el nombre a la app, que cugaid no dice nada 😀

  3. Seguí todas las instrucciones y este es el resultado:
    ruben64@informatico ~/Descargas/Q-Guide $ python q-guide.py
    Traceback (most recent call last):
    File «q-guide.py», line 23, in
    from PyQt4 import QtCore, QtGui, QtSql
    ImportError: cannot import name QtSql

  4. Bien, a mi me pasó lo mismo que @Rubén, y este es el error:
    ~/Q-Guide$ python q-guide.py
    Traceback (most recent call last):
    File «q-guide.py», line 23, in
    from PyQt4 import QtCore, QtGui, QtSql
    ImportError: cannot import name QtSql

    Tengo instalado «libqt4-sql» en Ubuntu. No sé qué otra cosa hacer. 🙁

    • Cambia de distro? 😀
      Ahora en serio. tengo en futuro cambiar esa librería, dejar nada más las básicas de Qt4. Ahora mismo no recuerdo como se llama la dichosa lib en Debian/Ubuntu, pero la solución debe estar en las PyQt4-devel o PyQt4.

    • caballero a aprender python!!!
      aptitude search pyqt
      sudo aptitude install python-pyqt4.qtsql
      o
      sudo aptitude install python3-pyqt4.qtsql
      o
      sudo aptitude install python3-pyqt5.qtsql

      según la versión de python y de pyqt que esté usando el soft, por lo general los desarrolladores van atrasados así que la primera debería funcionarles

        • Por cierto, por que no usas python3 para esto, digo es más actual y corre hasta en debian, es que es mejor para sql, tiene unas optimizaciones que ni te cuento

        • un upgrade para ti, donde dice
          query = («SELECT number, name, address FROM ‘main’.’movil’ WHERE number LIKE ‘%{nmbr}%’ AND name LIKE ‘%{nam}%’ AND address LIKE ‘%{addr}%’;»).format(nmbr=nmbr, nam=nam, addr=addr)

          pon lo siguiente (optimiza la consulta y esta responde más rápido)

          if (nmbr!=»»): qstr=»number LIKE ‘%{nmbr}%'».format(nmbr=nmbr)
          else: qstr=»»
          if (nam!=»»):
          if (qstr!=»»): qstr+= » AND »
          qstr+=»name LIKE ‘%{nam}%'».format(nam=nam)
          if (addr!=»»):
          if (qstr!=»»): qstr+= » AND »
          qstr+=»address LIKE ‘%{addr}%'».format(addr=addr)
          query = («SELECT number, name, address FROM ‘main’.’movil’ WHERE ‘%{qstr}%’;»).format(qstr=qstr)

Los comentarios están cerrados.