From b2bfa40f27d95a2ddce2bf54c29ecb21a3ef7110 Mon Sep 17 00:00:00 2001 From: StyxX65 <150797939+StyxX65@users.noreply.github.com> Date: Sat, 18 Apr 2026 13:59:27 +0200 Subject: [PATCH] =?UTF-8?q?v1.6.20=20=E2=80=94=20Scan=20history,=20user-sc?= =?UTF-8?q?oped=20sharing,=20export=20fixes,=20email=20fixes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit New features Scan history browser Results from any past scan session can now be reviewed without running a new scan. On page load the latest completed session is loaded automatically. A Sessions button opens a picker listing all past sessions with date, sources, item count, and Delta/Latest badges. All filters, exports, and disposition tagging work normally in history mode. Starting a new scan exits history mode. User-scoped viewer tokens (#34) Viewer token links can now be restricted to a specific employee so they only see their own flagged files — across both M365 and Google Workspace. The Share modal's scope selector gains a User option with a searchable name autocomplete. Selecting a person stores both their M365 and GWS email addresses; the server filters by account_id IN (list) so items from either platform are included. The viewer header shows the person's full name in a locked identity badge. --- Bug fixes GWS and local/SMB results missing from exports Two silent failures caused Google Workspace and file-scan results to disappear from Art.30 and Excel exports after a page reload: - google_scan.py called _db.end_scan() (method doesn't exist — should be finish_scan), so GWS scan records never got finished_at set and were permanently excluded from get_session_items() - google_scan.py emitted scan_done instead of google_scan_done, breaking SSE teardown logic - File scan called begin_scan() with keyword arguments it doesn't accept, silently leaving _db_scan_id = None so local/SMB items were never written to the database Graph sendMail reported as failure despite email being delivered _post() called r.json() unconditionally. Graph's sendMail returns HTTP 202 with no body on success, causing a JSONDecodeError that was caught and reported as a send failure. Fixed with r.json() if r.content else {}. Graph error hidden by generic SMTP message When Graph failed and no SMTP host was saved, the real Graph error was swallowed by "No SMTP host configured". The error is now surfaced directly. Gmail vs Google Workspace SMTP errors Auth failure messages now distinguish between personal Gmail (@gmail.com) and Google Workspace custom-domain accounts. Workspace errors point to the admin console (SMTP relay, 2-Step Verification policy) rather than the user's personal security settings. --- GDPR_ERRORLOG.md | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 GDPR_ERRORLOG.md diff --git a/GDPR_ERRORLOG.md b/GDPR_ERRORLOG.md new file mode 100644 index 0000000..a418f6d --- /dev/null +++ b/GDPR_ERRORLOG.md @@ -0,0 +1,42 @@ +# GDPR ERRORLOG + +08.51.11 Scanner… +09.18.52 Årsrapport 2024 underskrevet af bestyrelsen.pdf: Skipped — 28.4 MB exceeds 20.0 MB limit +09.36.26 Google Workspace — henr218d@pers.gudenaaskolen.dk +09.36.26 henr218d@pers.gudenaaskolen.dk — Gmail +09.37.56 henr218d@pers.gudenaaskolen.dk — Google Drive +10.00.13 Drive/henr218d@pers.gudenaaskolen.dk: The read operation timed out +10.00.13 Google Workspace — char8467@pers.gudenaaskolen.dk +10.00.13 char8467@pers.gudenaaskolen.dk — Gmail +10.00.24 char8467@pers.gudenaaskolen.dk — Google Drive +10.00.38 Artikel 30-rapport klar. +10.54.48 Live-log genoptaget — tidligere indlæg afspillet fra igangværende scanning. +11.13.12 Mikkel Vermehren.pdf: unhashable type: 'dict' +11.13.43 Standpunkt Gudenåskolen 20-2-2019.pdf: unhashable type: 'dict' +11.14.34 Alvilda afgangsbevis.pdf: unhashable type: 'dict' +11.21.26 Google Workspace — tina937n@pers.gudenaaskolen.dk +11.21.26 tina937n@pers.gudenaaskolen.dk — Gmail +11.21.39 tina937n@pers.gudenaaskolen.dk — Google Drive +11.31.53 Google Workspace — char8467@pers.gudenaaskolen.dk +11.31.53 char8467@pers.gudenaaskolen.dk — Gmail +11.32.04 char8467@pers.gudenaaskolen.dk — Google Drive +11.41.02 Bjarke Markussen.pdf: unhashable type: 'dict' +11.41.07 Claus Pawelczyk.pdf: unhashable type: 'dict' +11.41.09 5. BevisDiploma forandringsledelse Jacob Holm.PDF: unhashable type: 'dict' +11.41.10 6. BevisDiploma pædagogisk ledelse Jacob Holm.PDF: unhashable type: 'dict' +11.41.12 Jacob Holm.pdf: unhashable type: 'dict' +11.41.18 Jens Horn.pdf: unhashable type: 'dict' +11.41.23 BevisDiploma.pdf: unhashable type: 'dict' +11.41.26 Lone M. Laugesen.pdf: unhashable type: 'dict' +11.41.31 Bjarke Markussen.pdf: unhashable type: 'dict' +11.41.37 Claus Pawelczyk.pdf: unhashable type: 'dict' +11.41.47 Jens Horn.pdf: unhashable type: 'dict' +11.41.58 Rami Sverdlin.pdf: unhashable type: 'dict' +11.41.59 BevisDiploma.pdf: unhashable type: 'dict' +11.42.00 Lone M. Laugesen.pdf: unhashable type: 'dict' +11.42.04 Susanne h. Petersen.pdf: unhashable type: 'dict' +11.42.15 Diplom i Ledelse eksamensbevis.pdf: unhashable type: 'dict' +11.42.16 Trine Bisgaard.pdf: unhashable type: 'dict' +11.42.20 Rami Sverdlin.pdf: unhashable type: 'dict' +11.42.23 Susanne h. Petersen.pdf: unhashable type: 'dict' +11.42.42 Bjarke Markussen.pdf: unhashable type: 'dict' \ No newline at end of file