diff options
| author | Daniel Schadt <kingdread@gmx.de> | 2025-11-01 15:23:45 +0100 |
|---|---|---|
| committer | Daniel Schadt <kingdread@gmx.de> | 2025-11-01 15:23:45 +0100 |
| commit | 939826644ff09b38f807390c86b789306f858ba1 (patch) | |
| tree | 3c88b562aa462b808425f25cde4a2ea2c17b2abf | |
| parent | 04f6e55ef9facf367a06839dfffd58230cf88d7f (diff) | |
| download | fietsboek-939826644ff09b38f807390c86b789306f858ba1.tar.gz fietsboek-939826644ff09b38f807390c86b789306f858ba1.tar.bz2 fietsboek-939826644ff09b38f807390c86b789306f858ba1.zip | |
fix size breakdown
| -rw-r--r-- | fietsboek/views/admin.py | 18 |
1 files 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"] |
