First static porting pass for the Odoo 14.0 branch:
- data/mail_template_data.xml: revert from 17.0 qweb (type="html",
<t t-out>) to Odoo 14 Jinja2 (${...}, % if, % for)
- views: convert 6 Odoo-17-style invisible="state == '...'" attributes
to Odoo 14 attrs="{'invisible': [domain]}" (blog_topic, blog_generation_log)
- PORTING.md: tick completed items, note remaining (data-test-id RNG,
blog.post.content on 14, pytest pinning for Py3.7)
Static pass only — not yet verified on a live Odoo 14 instance.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
43 lines
2.5 KiB
Markdown
43 lines
2.5 KiB
Markdown
# Porting status — Odoo 14.0 branch
|
|
|
|
This branch targets **Odoo Community 14.0** — the version **ITSulu runs in production**. It was
|
|
**seeded from the 17.0 baseline** and the Odoo-14 porting is tracked here. Until every item is
|
|
verified, treat this branch as **work in progress** — do not deploy to the production 14.0
|
|
instance unverified.
|
|
|
|
> The product feature set is the same across all Odoo branches; only the Odoo-API-specific code
|
|
> differs. Odoo 14 is **older** than the 17.0 baseline, so several things move *backwards*.
|
|
> See `CLAUDE.md` §15 for the branch model and §11.5 / §12 for version-specific gotchas.
|
|
|
|
## Series markers (done)
|
|
|
|
- [x] `.odoo-series` = `14.0`
|
|
- [x] `Dockerfile` base image = `odoo:14.0`
|
|
- [x] manifest version prefix = `14.0.` (via `bump-version.sh`)
|
|
|
|
## API porting checklist (verify on a real Odoo 14.0 instance)
|
|
|
|
- [x] **Mail template syntax — reverted to Jinja2.** `data/mail_template_data.xml` restored to
|
|
Odoo 14's Jinja2 (`${...}`, `% if`, `% for`) instead of the 17.0 qweb `type="html"`.
|
|
- [x] **View conditional attributes → `attrs`.** Converted the 6 Odoo-17-style
|
|
`invisible="state == '…'"` attributes (blog_topic, blog_generation_log) to Odoo 14
|
|
`attrs="{'invisible': [domain]}"`.
|
|
- [~] **Mail render API.** Odoo 14 `_render_field(field, res_ids, engine='jinja')` exists — the
|
|
tests' `_render_field('subject', [id])` should work now that the template is Jinja. Verify live.
|
|
- [~] Python: `'ImageResult | None'` in `image_router.py` is a quoted (3.7-safe) annotation; no
|
|
walrus / 3.9 subscript generics found.
|
|
- [ ] `data-test-id` attributes in views — confirm Odoo 14 RNG accepts them (Playwright-only;
|
|
may need removal/guarding on 14).
|
|
- [ ] `blog.post` body field name on 14.0 (the 17.0 baseline writes `content` — confirm 14.0).
|
|
- [ ] `@api.model_create_multi`, `name_get`, and other ORM signatures valid on 14.0.
|
|
- [ ] `ir.cron` + mail data XML formats.
|
|
- [ ] pytest / pytest-odoo / pytest-bdd versions compatible with odoo:14.0's Python 3.7.
|
|
- [ ] Full test suite green on a 14.0 template DB (K8s job, §8, base image `odoo:14.0`).
|
|
|
|
## How to work this branch
|
|
|
|
1. Stand up a 14.0 template DB (mirror §8, base image `odoo:14.0`).
|
|
2. Start with the mail template (Jinja revert) and the render API — those are the biggest deltas.
|
|
3. Run the suite, fix one Odoo-API difference at a time.
|
|
4. Record each gotcha in `CLAUDE.md` §12 tagged with the series.
|
|
5. When green, cut a release on this branch (`bump-version.sh` → tag `14.0-vX.Y.Z`).
|