diff --git a/apps/tesm/pyproject.toml b/apps/tesm/pyproject.toml
index c5046eb..79fe8eb 100644
--- a/apps/tesm/pyproject.toml
+++ b/apps/tesm/pyproject.toml
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project]
name = "tesm"
-version = "2.7.4"
+version = "2.7.5"
description = "TESM -- Verwaltung und Ueberwachung von PoE-Endgeraeten und Aruba-Switchen"
requires-python = ">=3.11"
dependencies = [
diff --git a/apps/tesm/src/tesm/services/fileshare.py b/apps/tesm/src/tesm/services/fileshare.py
index 6bcc417..79ab4d1 100644
--- a/apps/tesm/src/tesm/services/fileshare.py
+++ b/apps/tesm/src/tesm/services/fileshare.py
@@ -895,6 +895,31 @@ def _namen_aus_detail(detail: str) -> list[str]:
return [teil.strip() for teil in detail.split(marke, 1)[1].split(",") if teil.strip()]
+#: Mehr als das zaehlt niemand mehr mit dem Auge -- und auf einer
+#: Netzwerkfreigabe kostet jeder weitere Eintrag Zeit.
+ZAEHLGRENZE = 500
+
+
+def _inhalt_zaehlen(verzeichnis: Path) -> int:
+ """Wie viele Eintraege liegen im Ordner? Begrenzt gezaehlt.
+
+ Gezeigt wird die Zahl an der Stelle, an der bei einer Datei die Groesse
+ steht -- dort stand bisher ein Gedankenstrich. Bei mehr als
+ ``ZAEHLGRENZE`` bricht das Zaehlen ab: die Oberflaeche schreibt dann
+ "500+", und niemand wartet auf eine Freigabe mit 40.000 Dateien.
+ """
+ anzahl = 0
+ try:
+ with os.scandir(verzeichnis) as eintraege:
+ for _ in eintraege:
+ anzahl += 1
+ if anzahl >= ZAEHLGRENZE:
+ break
+ except OSError:
+ return -1
+ return anzahl
+
+
def list_directory(mount: Mount, relative: str = "") -> dict[str, Any]:
path = resolve_path(mount, relative)
if not path.is_dir():
@@ -916,6 +941,7 @@ def list_directory(mount: Mount, relative: str = "") -> dict[str, Any]:
),
}
if entry.is_dir():
+ record["entries"] = _inhalt_zaehlen(entry)
directories.append(record)
else:
record["previewable"] = entry.suffix.lower() in PREVIEW_MIME
diff --git a/apps/tesm/src/tesm/templates/tesm/fileshare.html b/apps/tesm/src/tesm/templates/tesm/fileshare.html
index d9e3443..411bb6d 100644
--- a/apps/tesm/src/tesm/templates/tesm/fileshare.html
+++ b/apps/tesm/src/tesm/templates/tesm/fileshare.html
@@ -81,11 +81,24 @@
{% if current_user.has('fileshare.delete') %}
{% endif %}
-
+ {# Symbol und Name in einer Zeile: der Zeilenumbruch dazwischen
+ liess den Ordner aussehen wie zwei halbe Zeilen. #}
+