Skip to content

Library System (zentral_systems)

Central data layer for the PlantDesign template library. No user-facing UI lives here -- only models, persistence, validation and R2 operations.

Sub-packages

Directory Purpose
models/ Dataclasses: LibraryContainer, LibraryItem, Folder, Variant, BoundChild, UserLibrarySettings, enums
controllers/ LibraryController -- CRUD, search, validation for one library
persistence/ ContainerSerializer (msgpack.gz), atomic_writer, settings_persistence
validation/ ReferenceIntegrityValidator (6 rules)

Key files (root level)

File Purpose
r2_master_library_manager.py Versioned R2 upload/download with write-lock
serialization.py Low-level msgpack helpers
library_property_options_manager.py Property-dialog option lists
exceptions.py Domain exceptions (LibrarySystemError hierarchy)

R2 Master Library Workflow

get_master_bib()          -- read-only download (cached)
request_write_access()    -- acquire lock + work copy
  ... edit locally ...
sign_and_release_library() -- upload new version, release lock

UI Phase (upcoming)

The UI phase will add Qt widgets in startup_system/bound_subsystems/library_orchestration/. Widgets should be promoted via Qt Designer and communicate with LibraryController through signals. No QSS in this package -- styling is handled externally via StylesheetManager.