Introduces self._nav_gen, incremented on every _navigate_to_item_data call. The counter is threaded through _fetch_list_contents_bg and checked in _finalize_list_loading: if the user navigated away while a fetch was in flight, the stale results are silently discarded instead of overwriting the active folder view and re-sorting its items. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
SharePoint Browser
En moderne Python-baseret fil-browser til Microsoft SharePoint, specielt designet til at omgå Windows' MAX_PATH (260 karakterer) begrænsning. Det opnås ved at integrere direkte med Microsoft Graph API ved hjælp af unikke ID'er og downloade/udtjekke filer til redigering via korte, midlertidige stier lokalt.
🚀 Funktioner
- Ingen Sti-begrænsning (MAX_PATH): Problemfri og pålidelig redigering uanset mappedybde i SharePoint.
- Sikker Redigering & Kollision-beskyttelse: Automatisk Check-out/Check-in og intelligent overvågning af fil-låse lokalt.
- Professionel Brugerflade: Bygget med
wxPython(Native Windows UI) inklusiv indfødte OS-ikoner, brødkrummesti (breadcrumbs) og lazy-loading af hierarkisk træstruktur for markant hurtigere navigation. - First-Run Setup Wizard: Automatisk konfigurationsguide ved første opstart, der opsamler Client ID og Tenant ID (kræver ingen forudgående manuel
settings.json). - Avanceret Søgning: Hurtig global søgefunktion der bygger på et lokalt, trinvist opdateret indeks, samt understøttelse af "OG"-logik (AND logic).
- Fuld Fil- og Mappestyring: Understøtter upload, sletning og omdøbning, samt visning af udvidet fil-metadata (filstørrelse, redigeringsdato).
- Multisprog: Indbygget og brugerstyret understøttelse af både Dansk og Engelsk-grænseflade.
- Multi-File Editing: Robust understøttelse for lokalt at redigere flere forskellige filer uafhængigt af hinanden i baggrunden uden at interface fryser.
🛠️ Teknologier
- Sprog: Python 3.x
- GUI Framework: wxPython
- Godkendelse: MSAL (Microsoft Authentication Library)
- API Integration: Microsoft Graph API via
requests - Fil-overvågning: Polling via låse på lokalt filsystem
📦 Installation & Opstart
Forudsætninger
Sørg for, at du har Python installeret sammen med afhængighederne. Det anbefales at have en Microsoft 365-licens klar.
pip install wxPython msal requests
Kør applikationen
Star op med:
python sharepoint_browser.py
Ved første kørsel uden en konfiguration vil applikationen præsentere en Setup Wizard, hvor man nemt kan indtaste Microsoft-loginoplysningerne. Indtastningerne gemmes i en lokal settings.json fil.
🏗️ Byg til EXE (Valgfrit)
For at pakke programmet til en uafhængig, "kør-bar" .exe fil til Windows, kan dette gøres med PyInstaller:
pip install pyinstaller
python -m PyInstaller --windowed --onefile --icon=icon.ico --name "SharePoint Browser" sharepoint_browser.py
(Husk at afhæningheder og ikoner skal inddrages formelt i dit build afhængigt af din PyInstaller spec-fil).
🧩 Arkitektur & Workflow
- Godkendelse: Det autentificerer brugeren via MSAL & MS Graph API.
- Navigation: Data hentes asynkront (lazy-loading). Alt håndteres med ID'er istedet for filstier, hvilket sikrer MAX_PATH-modstandsdygtighed.
- Baggrundshåndtering af redigering:
- Filer tjekkes ud (
Checkout) direkte i SharePoint. - Hentes ned til det lokale drev under korte stier under C-drevet eks.
C:\Temp_SP\[MD5-Hash].[ext]. - Et baggrunds-thread overvåger derefter det lokale program (fx Word) kontinuerligt via
os.rename()tricket. - Når filen lukkes fra dit office-program, uploades ændringerne op til SharePoint og modtager et
Checkin.
- Filer tjekkes ud (
💡 Backlog / Kommende muligheder
- Integration for håndtering af flere tenants (lejemål)
- Et yderligere detaljeret log-system specielt til debugging af baggrundstråden.
- Udvidet aktivitetslog til sporing af handlinger for de seneste 14 dage.
- Styring af licenser til specifikke kunders varigheder (fx 1 år, 3 år, Lifetime).