itsulu-blog-publisher/PORTING.md
Nicholas Riegel 5fdbcdadc9 release: v0.5.0 — establish Odoo 14.0 branch (ITSulu production target)
Seed the 14.0 series branch from the 17.0 baseline:
- .odoo-series = 14.0; Dockerfile FROM odoo:14.0; manifest 14.0.0.5.0
- PORTING.md tracks the Odoo-14 checklist (biggest delta: mail templates
  must revert to Odoo 14's Jinja2 syntax; render API differs)
- README retargeted to 14.0 with porting-in-progress notice
- CHANGELOG v0.5.0 entry

NOTE: seeded from 17.0 — the Odoo-14 port is NOT yet verified (PORTING.md).
Not deploy-ready on the production 14.0 instance until the suite is green there.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-30 11:17:49 -04:00

39 lines
2.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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)
- [ ] **Mail template syntax — REVERT to Jinja2.** Odoo 14 renders `mail.template` with Jinja2
(`${object.blog_post_id.name}`, `% if`, `% for`), **not** the qweb `<t t-out>` used on 17.0.
The 17.0 template in `data/mail_template_data.xml` must be converted back to Jinja for 14.0.
- [ ] **Mail render API.** 14.0 uses `template.render_template(...)` / `_render_template(...)`,
not 17.0's `_render_field`. Update `blog_generation_log.send_notification_email` + tests.
- [ ] `blog.post` body field name on 14.0 (the 17.0 baseline writes `content` — confirm 14.0).
- [ ] Python 3.63.8 only — remove any 3.9+ syntax (dict `|` merge, `str.removeprefix`, etc.).
- [ ] `@api.model_create_multi`, `name_get`, and other ORM signatures valid on 14.0.
- [ ] View/RELAXNG validation for 14.0 (attrs/states syntax differs from 17.0).
- [ ] `ir.cron` + mail data XML formats.
- [ ] Full test suite green on a 14.0 template DB (K8s job, §8, base image `odoo:14.0`).
- [ ] pytest-odoo / pytest-bdd versions compatible with the 14.0 Python.
## 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`).