Task 1 set context['project_team_pairs_json'] = json.dumps(pairs), then the template rendered it with |json_script — which also calls json.dumps on the value. Result was a JSON-encoded string-of-a-string in the <script id="projectTeamPairs"> tag, so JSON.parse() returned a string (not a list) and the pill-popover IIFE died on pairs.forEach(...). Symptom: all three filter pills clickable but unresponsive. Fix: pass the raw Python list; let |json_script own the serialisation (the established pattern for team_workers_map_json and the other *_json keys on the payroll dashboard). Tests updated to read the raw list from resp.context. Added an end-to-end regression test that extracts the rendered <script id="projectTeamPairs"> payload and asserts JSON.parse() would return a list (not a string) — catches any future regression of this class even if the test suite and the view drift apart. Verified in the browser: all three pill popovers now open on click and Choices.js lazy-initialises correctly for projects/teams. 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%