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

2.3 KiB
Raw Blame History

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)

  • .odoo-series = 14.0
  • Dockerfile base image = odoo:14.0
  • 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).