aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Schadt <kingdread@gmx.de>2025-11-01 15:23:45 +0100
committerDaniel Schadt <kingdread@gmx.de>2025-11-01 15:23:45 +0100
commit939826644ff09b38f807390c86b789306f858ba1 (patch)
tree3c88b562aa462b808425f25cde4a2ea2c17b2abf
parent04f6e55ef9facf367a06839dfffd58230cf88d7f (diff)
downloadfietsboek-939826644ff09b38f807390c86b789306f858ba1.tar.gz
fietsboek-939826644ff09b38f807390c86b789306f858ba1.tar.bz2
fietsboek-939826644ff09b38f807390c86b789306f858ba1.zip
fix size breakdown
-rw-r--r--fietsboek/views/admin.py18
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"]