| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| README.md | 2026-05-22 | 3.1 kB | |
| v4.4.1 -- fresh-install hotfix (#154) source code.tar.gz | 2026-05-22 | 249.2 MB | |
| v4.4.1 -- fresh-install hotfix (#154) source code.zip | 2026-05-22 | 251.9 MB | |
| Totals: 3 Items | 501.1 MB | 0 | |
Hotfix above v4.4.0 — fixes GitHub issue [#154] (fresh community installs aborting with database is locked).
If you're a new user hitting (sqlite3.OperationalError) database is locked during alternative-3 install — this release fixes that. Upgrade with:
:::bash
pip install --upgrade openconstructionerp==4.4.1
# wipe the locked DB so the fixed seed can run cleanly:
rm -rf <data_dir>/openestimate.db
openconstructionerp
What broke (issue [#154])
Two bugs collided on every fresh install since v4.3.x:
-
Schema/snapshot drift —
SafetyIncident.osha_recordablewas added as a NOT NULL boolean with only a Python-sidedefault=False. The committedshowcase_snapshot.json.gzpredates that column, so the seed loader'sINSERT INTO oe_safety_incident (...)left it unsupplied. SQLite saw NOT NULL with no DEFAULT and trippedNOT NULL constraint failedon the very first incident insert. -
Leaked write lock —
seed_showcase_from_snapshotcaught the IntegrityError and returned withoutcon.rollback()/con.close(). SQLite's implicit transaction stayed open and the connection stayed alive, write-locking the file. Every subsequent boot step (demo account creation, admin reset, the next install retry) then cascaded asdatabase is locked.
What changed in v4.4.1
SafetyIncident.osha_recordablenow hasserver_default="0"so freshcreate_allemits the column withDEFAULT '0'. The snapshot insert now succeeds even without supplying the column.seed_showcase_snapshot.pyhas:- per-table
IntegrityErrorcatch that rolls back + skips just that table (defense in depth) - outer except that rolls back the connection
finallythat always closes the connection The SQLite write lock can no longer leak on a partial failure — same class of bug recurring on another column will no longer brick the install.geo_hubCesium viewer dev assets — the Vite dev server now serves/cesium/*fromnode_modules/cesium/Build/Cesiuminstead of falling back to the SPA index, and ESM interop is forced viaoptimizeDeps.include: ['cesium']. Globe now renders correctly innpm run dev.alembicv3103drop_constraintis now wrapped inbatch_alter_tableso the v4.4.0 PropDev migration runs on SQLite (drop_constraint(type_="unique")is unsupported in SQLite outside batch mode).
Verification
Smoke tested locally on a fresh in-memory DB:
- 7 projects + 113 tables + 10824 rows seeded cleanly
- 7 safety incidents loaded
- Post-seed write succeeded (no lock)
- Boot completes past
Application started successfully
Install
:::bash
pip install openconstructionerp==4.4.1
openconstructionerp
PyPI: https://pypi.org/project/openconstructionerp/4.4.1/
Upgrade from v4.4.0
:::bash
pip install --upgrade openconstructionerp==4.4.1
# if your install is healthy, no DB action needed
# if you're stuck on database is locked, wipe and re-seed:
rm -rf <data_dir>/openestimate.db
openconstructionerp
Reported by @jyloveqq — thanks for the precise screenshot.