From 05b296d3a8eaee03aa11c3dc655a06f8d1ac6b1c Mon Sep 17 00:00:00 2001 From: fedem-p Date: Tue, 28 Oct 2025 21:53:12 +0100 Subject: [PATCH 1/2] add tab to visualize database contents --- sismanager/__init__.py | 2 + sismanager/blueprints/db_viewer/__init__.py | 6 +++ sismanager/blueprints/db_viewer/routes.py | 47 ++++++++++++++++++ sismanager/static/css/dashboard.css | 2 +- sismanager/templates/base.html | 1 + sismanager/templates/db_viewer/db_viewer.html | 49 +++++++++++++++++++ 6 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 sismanager/blueprints/db_viewer/__init__.py create mode 100644 sismanager/blueprints/db_viewer/routes.py create mode 100644 sismanager/templates/db_viewer/db_viewer.html diff --git a/sismanager/__init__.py b/sismanager/__init__.py index 3069eda..2eb4d39 100644 --- a/sismanager/__init__.py +++ b/sismanager/__init__.py @@ -7,6 +7,7 @@ # Import and register blueprints from sismanager.blueprints.main.routes import main_bp from sismanager.blueprints.importer.routes import importer_bp +from sismanager.blueprints.db_viewer.routes import db_viewer_bp from sismanager.blueprints.calendar.routes import calendar_bp from sismanager.blueprints.materials.routes import materials_bp from sismanager.blueprints.money.routes import money_bp @@ -18,6 +19,7 @@ def create_app(): app.register_blueprint(main_bp) app.register_blueprint(importer_bp) + app.register_blueprint(db_viewer_bp) app.register_blueprint(calendar_bp) app.register_blueprint(materials_bp) app.register_blueprint(money_bp) diff --git a/sismanager/blueprints/db_viewer/__init__.py b/sismanager/blueprints/db_viewer/__init__.py new file mode 100644 index 0000000..1db6356 --- /dev/null +++ b/sismanager/blueprints/db_viewer/__init__.py @@ -0,0 +1,6 @@ +"""Database viewer blueprint for SISmanager.""" + +from .routes import db_viewer_bp + +__all__ = ['db_viewer_bp'] + diff --git a/sismanager/blueprints/db_viewer/routes.py b/sismanager/blueprints/db_viewer/routes.py new file mode 100644 index 0000000..c22b615 --- /dev/null +++ b/sismanager/blueprints/db_viewer/routes.py @@ -0,0 +1,47 @@ +""" +Routes for db_viewer blueprint in SISmanager. +""" + +import os +import pandas as pd +from flask import Blueprint, render_template, request +from sismanager.services.inout.central_db_service import CentralDBRepository + +db_viewer_bp = Blueprint( + "db_viewer", __name__, template_folder="../../templates/db_viewer" +) + +@db_viewer_bp.route("/db_viewer", methods=["GET", "POST"]) +def db_viewer(): + """Render the database viewer page with current data and optional column filtering.""" + repo = CentralDBRepository() + df = repo.read() + + if df.empty: + db_preview = "

No data found in the database.

" + available_columns = [] + selected_columns = [] + else: + available_columns = list(df.columns) + + # Handle column filtering from form submission + if request.method == "POST": + selected_columns = request.form.getlist("columns") + if selected_columns: + # Filter DataFrame to show only selected columns + df_filtered = df[selected_columns] + else: + df_filtered = df + else: + # Default: show all columns + selected_columns = available_columns + df_filtered = df + + db_preview = df_filtered.to_html(classes="table table-bordered", index=False) + + return render_template( + "db_viewer/db_viewer.html", + db_preview=db_preview, + available_columns=available_columns, + selected_columns=selected_columns + ) \ No newline at end of file diff --git a/sismanager/static/css/dashboard.css b/sismanager/static/css/dashboard.css index 9a0078c..66b837e 100644 --- a/sismanager/static/css/dashboard.css +++ b/sismanager/static/css/dashboard.css @@ -27,7 +27,7 @@ nav a:hover { text-decoration: underline; } .container { - max-width: 900px; + max-width: 95%; margin: 30px auto; background: #fff; padding: 30px; diff --git a/sismanager/templates/base.html b/sismanager/templates/base.html index a00e412..12ffe1b 100644 --- a/sismanager/templates/base.html +++ b/sismanager/templates/base.html @@ -12,6 +12,7 @@