minor fixes by Opencode

This commit is contained in:
2026-09-11 17:43:02 +02:00
parent 218c27c726
commit a82704d238
6 changed files with 2611 additions and 21 deletions
+69
View File
@@ -0,0 +1,69 @@
# AGENTS.md
## Project
Pyramid web app that uploads HTML files, strips unwanted tags, converts encoding to UTF-8, and serves cleaned files for download. UI is in French.
## Quick Start
```bash
python3 -m venv env
env/bin/pip install --upgrade pip setuptools
env/bin/pip install -e ".[testing]"
env/bin/pserve development.ini # localhost:9480
```
## Commands
```bash
env/bin/pytest # run all tests
env/bin/pytest tests/test_views.py # single file
env/bin/pserve development.ini # dev server (port 9480, template reload on)
env/bin/pserve production.ini # production server (port 9480, HTTPS)
```
## Architecture
```
html_cleanup/
├── __init__.py # Pyramid app factory (main())
├── routes.py # Two routes: / (home), /view_log
├── views/
│ ├── default.py # Core logic: home(), process_file(), clean_html()
│ └── notfound.py # 404 handler
├── templates/ # Jinja2 templates (layout.jinja2, home.jinja2, view_log.jinja2)
└── static/
└── temp/ # Upload output dir — configured in INI files via temp_folder setting
```
- `clean_html()` in `views/default.py` is the core — it parses HTML tags and keeps only a whitelisted set (table, img, a, div, p, h1–h6, b, em, i, li, ol, ul, strong, sub, sup, u, s, del, ins, br, hr).
- The temp folder path is set via `temp_folder` in `.ini` files — **development.ini uses an absolute local path** (`/Users/phuoc/pyramid/html_cleanup/html_cleanup/static/temp/`).
- `view_log` view has a **hardcoded user list** for access control.
## Config Files
| File | Purpose |
|---|---|
| `development.ini` | Dev config — debugtoolbar, template reload, local temp path |
| `production.ini` | Prod config — HTTPS, warns only |
| `testing.ini` | Test config — used by pytest via `conftest.py` |
| `pytest.ini` | `--strict-markers`, test paths: `html_cleanup` + `tests` |
## Known Issues
- **Tests are broken**:
- `tests/test_views.py` imports `my_view` — function was renamed to `home` and is no longer importable without a proper test request.
- `tests/test_functional.py` asserts `b'Pyramid'` in response body, but the page title is "HTML cleanup".
- Do not rely on `tests/` passing as-is; fix tests if modifying views.
- The `clean_html` regex for id attributes (`id=\"\w+\"`) won't match hyphens despite a comment claiming hyphens are supported — only `[a-zA-Z0-9_]` is matched.
## Conventions
- Templates use Jinja2 (not Mako). Extension: `.jinja2`.
- All user-facing strings are in French.
- Error logging goes to `static/temp/errors_log` (appended, not rotated).
- Tag whitelist in `clean_html()` is a series of `if/elif` chains — not a config or data structure.
## Todo
- Analyze @html_cleanup/views/default.py .py for potential issues, bugs, and code quality problems