Version 2.7.5: die Ordnerzeile sagt, was im Ordner liegt
This commit is contained in:
1 parent
ad0195bab0
commit
c639f4f507
7 files changed
+59
-6
No files matched your search
@@ -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 = [
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -81,11 +81,24 @@
|
||||
{% if current_user.has('fileshare.delete') %}
|
||||
<td><label class="check"><input type="checkbox" name="paths" value="{{ entry.relative }}"><span class="sr-only">auswählen</span></label></td>
|
||||
{% endif %}
|
||||
<td>
|
||||
{# Symbol und Name in einer Zeile: der Zeilenumbruch dazwischen
|
||||
liess den Ordner aussehen wie zwei halbe Zeilen. #}
|
||||
<td class="file-cell">
|
||||
{{ icon('folder', size=15) }}
|
||||
<a href="{{ url_for('fileshare.browse', share=token, path=entry.relative) }}">{{ entry.name }}</a>
|
||||
</td>
|
||||
<td class="numeric faint">–</td>
|
||||
{# An der Stelle der Dateigrösse: wie viel liegt darin. #}
|
||||
<td class="numeric faint fs-sm">
|
||||
{%- if entry.entries is not defined or entry.entries < 0 -%}
|
||||
–
|
||||
{%- elif entry.entries >= 500 -%}
|
||||
500+ Einträge
|
||||
{%- elif entry.entries == 1 -%}
|
||||
1 Eintrag
|
||||
{%- else -%}
|
||||
{{ entry.entries }} Einträge
|
||||
{%- endif -%}
|
||||
</td>
|
||||
<td class="fs-sm">{{ entry.modified | dt }}</td>
|
||||
<td class="actions"></td>
|
||||
</tr>
|
||||
|
||||
Reference in new issue
Block a user