The home dashboard and payroll dashboard used to disagree on "outstanding payments" because the home version included inactive workers' unpaid wages while the payroll dashboard's per-worker loop only iterated active workers. Symptom was the same field showing two different R-amounts depending on which page you opened first. Also fixes the Outstanding-by-Project card silently merging two projects when they share a name (it was keyed by project_name). - `_compute_outstanding` now defaults to active workers only. Pass `include_inactive_workers=True` to surface deactivated-worker liabilities (rare; usually means a forgotten payment). - Output is keyed by project_id (with name as data) so two projects with identical names stay as separate rows. - New `outstanding_by_project_sorted` list — pre-sorted by amount desc — replaces the dict iteration in templates. - "Active Loans" card on the home dashboard renamed to "Active Loans & Advances" so the label matches its data (which already summed both loan_types). - Regression tests: ComputeOutstandingActiveScopeTests + ComputeOutstandingProjectIdKeyingTests. Findings 1, 7/17, 8. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Flatlogic Python Template Workspace
This workspace houses the Django application scaffold used for Python-based templates.
Requirements
- Python 3.11+
- MariaDB (or MySQL-compatible server) with the credentials prepared by
setup_mariadb_project.sh - System packages:
pkg-config,libmariadb-dev(already installed on golden images)
Getting Started
python3 -m pip install --break-system-packages -r requirements.txt
python3 manage.py migrate
python3 manage.py runserver 0.0.0.0:8000
Environment variables are loaded from ../.env (the executor root). See .env.example if you need to populate values manually.
Project Structure
config/– Django project settings, URLs, WSGI entrypoint.core/– Default app with a basic health-check route.manage.py– Django management entrypoint.
Next Steps
- Create additional apps and views according to the generated project requirements.
- Configure serving via Apache + mod_wsgi or gunicorn (instructions to be added).
- Run
python3 manage.py collectstaticbefore serving through Apache.
Description
Languages
JavaScript
42.5%
SCSS
41.7%
CSS
11.9%
Python
3.2%
HTML
0.6%