Skip to main content

Un gestor de inventario creado con GTK3 y SQLite.

Project description


📦 Gestor de Inventario

Un sistema de gestión de inventario de escritorio, limpio y eficiente, desarrollado en Python utilizando GTK3 para la interfaz gráfica y SQLite para el almacenamiento local de datos.

✨ Características

  • Gestión de Productos (CRUD): Añade, edita, elimina y visualiza productos fácilmente.
  • Gestión de Categorías: Organiza tu inventario creando categorías personalizadas.
  • Base de datos local: Almacenamiento seguro en SQLite aislado en la carpeta de usuario (~/.gestor_inventario/).
  • Interfaz moderna: Estilos personalizados mediante CSS (tematización completa de GtkTreeView, botones y formularios).
  • Validación de datos: Formularios a prueba de errores.

📚 Documentación

Puedes consultar la documentación detallada de la API, clases y métodos, generada con Sphinx, en el siguiente enlace:

👉 gestor-inventario-samuel.readthedocs.io 👉 gestor-inventario-samuel.github

🛠️ Requisitos Previos

  • Python 3.8 o superior.
  • Librerías de GTK3 instaladas en tu sistema:
  • Linux: Instaladas por defecto en la mayoría de distribuciones (como Debian/Ubuntu).
  • Windows: Requiere un entorno como MSYS2 o WSL.

🚀 Instalación

La aplicación está publicada, por lo que puedes instalarla fácilmente a través de pip:

pip install .

Uso

Una vez instalado, puedes ejecutar la aplicación con el comando:

xestor-inventario

🧪 Tests

Para ejecutar las pruebas unitarias de validación y conexión a base de datos:

python -m unittest discover tests/

Buildeo

py -m build

py -m twine upload dist/*

📊 Arquitectura del Sistema

1. Diagrama de Clases

Este diagrama muestra cómo se relacionan las piezas principales del código, incluyendo la lógica de la aplicación, la interfaz y la persistencia.

classDiagram
    class App {
        +VentanaPrincipal ventanaPrincipal
        +__init__()
        +cargarEstilos()
    }

    class VentanaPrincipal {
        +GtkTreeView vistaArbol
        +__init__()
        +cargarDatos()
        +alHacerClicAnadir(widget)
        +alHacerClicEditar(widget)
        +alHacerClicEliminar(widget)
        +alHacerClicCategorias(widget)
    }

    class DialogoFormulario {
        +int identificadorProducto
        +__init__(ventanaPadre, productoSeleccionado)
        +cargarCategorias()
        +obtenerDatos()
        +validarDatos()
    }

    class VentanaCategorias {
        +GtkTreeView vistaArbol
        +__init__(ventanaPadre)
        +cargarDatos()
        +alHacerClicAnadir(widget)
    }

    class ConexionBD {
        +String rutaBaseDatos
        +Connection conexionActiva
        +Cursor cursorActivo
        +__init__(rutaBaseDatos)
        +conectarBaseDatos()
        +crearCursor()
        +consultaSenParametros(sql)
        +engadeRexistro(sql, args)
        +actualizaRexistro(sql, args)
        +eliminarRegistro(sql, args)
        +cerrarBaseDatos()
    }

    %% Relaciones
    App "1" *-- "1" VentanaPrincipal : Inicializa
    VentanaPrincipal "1" ..> "*" DialogoFormulario : Abre
    VentanaPrincipal "1" ..> "1" VentanaCategorias : Abre
    VentanaPrincipal ..> ConexionBD : Usa
    DialogoFormulario ..> ConexionBD : Usa
    VentanaCategorias ..> ConexionBD : Usa

2. Diagrama de Secuencia

Proceso de añadir un nuevo producto al inventario:

sequenceDiagram
    actor Usuario
    participant VP as VentanaPrincipal
    participant DF as DialogoFormulario
    participant BD as ConexionBD
    participant SQLite as Base de Datos Local

    Usuario->>VP: Clic en botón "Añadir"
    VP->>DF: __init__(parent=VP, producto=None)
    activate DF
    DF->>BD: conectarBaseDatos()
    BD->>SQLite: SELECT * FROM categorias
    SQLite-->>BD: Retorna categorías
    BD-->>DF: Diccionario de categorías
    DF-->>VP: Muestra ventana modal (Formulario)
    
    Usuario->>DF: Rellena datos y clic en "Guardar"
    DF->>DF: validarDatos()
    alt Datos Inválidos
        DF-->>Usuario: Muestra MensajeDialog (Error)
    else Datos Válidos
        DF->>DF: obtenerDatos()
        DF->>BD: conectarBaseDatos()
        DF->>BD: engadeRexistro(INSERT INTO productos...)
        activate BD
        BD->>SQLite: Ejecuta Query
        SQLite-->>BD: OK
        BD-->>DF: Operación exitosa
        deactivate BD
        DF-->>VP: Retorna ResponseType.OK
        deactivate DF
        
        VP->>BD: conectarBaseDatos()
        VP->>BD: consultaSenParametros(SELECT * FROM productos...)
        BD->>SQLite: Ejecuta Query
        SQLite-->>BD: Retorna filas actualizadas
        BD-->>VP: Datos de productos
        VP->>VP: Actualiza GtkListStore (TreeView)
        VP-->>Usuario: Muestra tabla actualizada
    end

Desarrollado por: Samuel

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gestor_inventario_samuel-4.0.tar.gz (37.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gestor_inventario_samuel-4.0-py3-none-any.whl (14.5 kB view details)

Uploaded Python 3

File details

Details for the file gestor_inventario_samuel-4.0.tar.gz.

File metadata

  • Download URL: gestor_inventario_samuel-4.0.tar.gz
  • Upload date:
  • Size: 37.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for gestor_inventario_samuel-4.0.tar.gz
Algorithm Hash digest
SHA256 383f8b9dd5528b59fe4d000a7cdb928174d3e2c3f17fbfd2da091bc9010bfc4b
MD5 ecaff07c643718366e1f5dfd261d6b0a
BLAKE2b-256 4a29764d18481f15929ee58ef974b8cc0b75acf50cf74784915cb01ec2b16a1f

See more details on using hashes here.

File details

Details for the file gestor_inventario_samuel-4.0-py3-none-any.whl.

File metadata

File hashes

Hashes for gestor_inventario_samuel-4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0227ef8f6dfcc638aa256d0ef5245e2154f896a340a41632b5fa6faf23c33aeb
MD5 9b7cd041ada8ed134ca2d22da3808a53
BLAKE2b-256 ec05f441178945ef307afd7137db238ebd4ee86a45ff88d43d54d761398871fb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page