From 939826644ff09b38f807390c86b789306f858ba1 Mon Sep 17 00:00:00 2001 From: Daniel Schadt Date: Sat, 1 Nov 2025 15:23:45 +0100 Subject: fix size breakdown --- fietsboek/views/admin.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/fietsboek/views/admin.py b/fietsboek/views/admin.py index 821a9fc..3f036e2 100644 --- a/fietsboek/views/admin.py +++ b/fietsboek/views/admin.py @@ -10,7 +10,7 @@ from pyramid.httpexceptions import HTTPFound from pyramid.i18n import TranslationString as _ from pyramid.request import Request from pyramid.view import view_config -from sqlalchemy import func, select +from sqlalchemy import func, select, text from .. import models, util @@ -39,12 +39,22 @@ class SizeBreakdown: user_maps: int = 0 -def _get_size_breakdown(data_manager): +def _get_size_breakdown(dbsession, data_manager): breakdown = SizeBreakdown() + dialect = dbsession.bind.dialect.name + if dialect == "sqlite": + query = text("""SELECT SUM("pgsize") FROM "dbstat" WHERE name='track_points';""") + result = dbsession.execute(query).scalar_one() + breakdown.gpx_files += result + elif dialect == "postgresql": + database_name = dbsession.bind.url.database + query = text(f"""SELECT pg_relation_size('track_points');""") + result = dbsession.execute(query).scalar_one() + breakdown.gpx_files += result + for track_id in data_manager.list_tracks(): track = data_manager.open(track_id) - breakdown.gpx_files += _safe_size(track.gpx_path()) breakdown.gpx_files += _safe_size(track.backup_path()) breakdown.preview_files += _safe_size(track.preview_path()) for image_id in track.images(): @@ -82,7 +92,7 @@ def admin(request: Request): user_count = request.dbsession.execute(select(func.count()).select_from(models.User)).scalar() track_count = request.dbsession.execute(select(func.count()).select_from(models.Track)).scalar() size_total = request.data_manager.size() - size_breakdown = _get_size_breakdown(request.data_manager) + size_breakdown = _get_size_breakdown(request.dbsession, request.data_manager) try: distro = platform.freedesktop_os_release()["PRETTY_NAME"] -- cgit v1.2.3