mirror of
https://gitlab.com/itsulu-odoo/itsulu-blog-publisher.git
synced 2026-05-30 23:41:23 +00:00
release: 14.0-v0.5.1 — Odoo 14 port verified green (69/69)
Full suite passes on a live odoo:14.0 instance; module installs cleanly. PORTING.md marked complete with the full list of resolved Odoo-14 deltas. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
55ab28f5db
commit
96adace887
5 changed files with 45 additions and 29 deletions
18
CHANGELOG.md
18
CHANGELOG.md
|
|
@ -12,6 +12,24 @@ Release notes are written in plain language so anyone on the team can follow wha
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## v0.5.1 — 2026-05-30 (14.0)
|
||||||
|
|
||||||
|
The **Odoo 14.0 port is complete and verified** — the full automated suite (69 tests) passes
|
||||||
|
on a real Odoo 14.0 instance and the module installs cleanly. This branch is ready for the
|
||||||
|
ITSulu production instance.
|
||||||
|
|
||||||
|
### Changed (Odoo 14 compatibility)
|
||||||
|
|
||||||
|
- Email template moved back to Odoo 14's Jinja2 syntax.
|
||||||
|
- Admin views adjusted to Odoo 14's conditional-visibility format (this had been blocking the
|
||||||
|
module from installing on 14).
|
||||||
|
- Test suite updated for Odoo 14's test framework and database APIs.
|
||||||
|
- Performance query budget tuned for Odoo 14 (it issues a few more framework queries than 17).
|
||||||
|
|
||||||
|
See [PORTING.md](PORTING.md) for the full list of Odoo-14 deltas resolved.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## v0.5.0 — 2026-05-30
|
## v0.5.0 — 2026-05-30
|
||||||
|
|
||||||
Sets up support for **multiple Odoo Community versions**, each on its own branch — the same
|
Sets up support for **multiple Odoo Community versions**, each on its own branch — the same
|
||||||
|
|
|
||||||
50
PORTING.md
50
PORTING.md
|
|
@ -1,9 +1,10 @@
|
||||||
# Porting status — Odoo 14.0 branch
|
# Porting status — Odoo 14.0 branch
|
||||||
|
|
||||||
|
**✅ PORT COMPLETE & VERIFIED (v0.5.1)** — full suite **69/69 passing** on a live Odoo 14.0
|
||||||
|
instance (K8s `odoo_test_14`, base image `odoo:14.0`, Python 3.7). Module installs cleanly.
|
||||||
|
|
||||||
This branch targets **Odoo Community 14.0** — the version **ITSulu runs in production**. It was
|
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
|
seeded from the 17.0 baseline and ported to Odoo 14 APIs.
|
||||||
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
|
> 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*.
|
> differs. Odoo 14 is **older** than the 17.0 baseline, so several things move *backwards*.
|
||||||
|
|
@ -15,29 +16,26 @@ instance unverified.
|
||||||
- [x] `Dockerfile` base image = `odoo:14.0`
|
- [x] `Dockerfile` base image = `odoo:14.0`
|
||||||
- [x] manifest version prefix = `14.0.` (via `bump-version.sh`)
|
- [x] manifest version prefix = `14.0.` (via `bump-version.sh`)
|
||||||
|
|
||||||
## API porting checklist (verify on a real Odoo 14.0 instance)
|
## Odoo 14 deltas resolved (what the port required)
|
||||||
|
|
||||||
- [x] **Mail template syntax — reverted to Jinja2.** `data/mail_template_data.xml` restored to
|
- [x] **Mail template → Jinja2.** `data/mail_template_data.xml` reverted from the 17.0 qweb
|
||||||
Odoo 14's Jinja2 (`${...}`, `% if`, `% for`) instead of the 17.0 qweb `type="html"`.
|
(`type="html"`, `<t t-out>`) to Odoo 14 Jinja2 (`${...}`, `% if`, `% for`).
|
||||||
- [x] **View conditional attributes → `attrs`.** Converted the 6 Odoo-17-style
|
- [x] **View conditional attrs → `attrs`.** 7 Odoo-17 bare/expression `invisible="…"`
|
||||||
`invisible="state == '…'"` attributes (blog_topic, blog_generation_log) to Odoo 14
|
attributes (blog_topic, blog_generation_log, blog_schedule web_ribbon) converted to
|
||||||
`attrs="{'invisible': [domain]}"`.
|
Odoo 14 `attrs="{'invisible': [domain]}"`. This was blocking module install.
|
||||||
- [~] **Mail render API.** Odoo 14 `_render_field(field, res_ids, engine='jinja')` exists — the
|
- [x] **Test framework: `setUpClass`/`cls.env` → `setUp`/`self.env`.** Odoo 14 exposes the env
|
||||||
tests' `_render_field('subject', [id])` should work now that the template is Jinja. Verify live.
|
in `setUp` (instance), not `setUpClass` (Odoo 15+). 13 blocks across 6 files converted.
|
||||||
- [~] Python: `'ImageResult | None'` in `image_router.py` is a quoted (3.7-safe) annotation; no
|
- [x] **`env.flush_all()` → `env['base'].flush()`.** `flush_all` is Odoo 15+; 14 uses
|
||||||
walrus / 3.9 subscript generics found.
|
recordset `.flush()`.
|
||||||
- [ ] `data-test-id` attributes in views — confirm Odoo 14 RNG accepts them (Playwright-only;
|
- [x] **Test mocks set `body_html`.** Odoo 14 rejects an unset MagicMock written to
|
||||||
may need removal/guarding on 14).
|
`blog.post.content` (`can't adapt type 'MagicMock'`); 17 silently stringified it.
|
||||||
- [ ] `blog.post` body field name on 14.0 (the 17.0 baseline writes `content` — confirm 14.0).
|
- [x] **Query budget.** Odoo 14 issues ~54 framework queries vs 17's <50; budget raised to 60.
|
||||||
- [ ] `@api.model_create_multi`, `name_get`, and other ORM signatures valid on 14.0.
|
- [x] Python 3.7 syntax verified (compileall); pytest 7.4.4 / pytest-bdd 6.1.1 / pytest-odoo
|
||||||
- [ ] `ir.cron` + mail data XML formats.
|
1.0.1 pinned for Python 3.7.
|
||||||
- [ ] pytest / pytest-odoo / pytest-bdd versions compatible with odoo:14.0's Python 3.7.
|
- [x] **Full suite green: 69/69 on odoo:14.0.**
|
||||||
- [ ] Full test suite green on a 14.0 template DB (K8s job, §8, base image `odoo:14.0`).
|
|
||||||
|
|
||||||
## How to work this branch
|
## Releasing further changes on this branch
|
||||||
|
|
||||||
1. Stand up a 14.0 template DB (mirror §8, base image `odoo:14.0`).
|
1. Use the 14.0 K8s job (base image `odoo:14.0`, fresh `odoo_test_14`, `odoo -i` then pytest).
|
||||||
2. Start with the mail template (Jinja revert) and the render API — those are the biggest deltas.
|
2. Record any new Odoo-14 gotcha in `CLAUDE.md` §12.
|
||||||
3. Run the suite, fix one Odoo-API difference at a time.
|
3. `bump-version.sh patch|minor` → CHANGELOG → commit → `bump-version.sh tag` (tags `14.0-vX.Y.Z`).
|
||||||
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`).
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# ITSulu Blog Publisher — Odoo 14 Addon
|
# ITSulu Blog Publisher — Odoo 14 Addon
|
||||||
|
|
||||||
**Version:** 0.5.0
|
**Version:** 0.5.1
|
||||||
|
|
||||||
Automated blog post generation and publishing for Odoo 14.0 Community Edition, powered by generative AI (Anthropic Claude, OpenAI, Google Gemini, or Ollama).
|
Automated blog post generation and publishing for Odoo 14.0 Community Edition, powered by generative AI (Anthropic Claude, OpenAI, Google Gemini, or Ollama).
|
||||||
|
|
||||||
|
|
|
||||||
2
VERSION
2
VERSION
|
|
@ -1 +1 @@
|
||||||
0.5.0
|
0.5.1
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
'name': 'ITSulu Blog Publisher',
|
'name': 'ITSulu Blog Publisher',
|
||||||
# Odoo manifest version = <odoo_series>.<product_version>. Product version
|
# Odoo manifest version = <odoo_series>.<product_version>. Product version
|
||||||
# is tracked in the repo-root VERSION file (currently 0.4.8). See CLAUDE.md §15.
|
# is tracked in the repo-root VERSION file (currently 0.4.8). See CLAUDE.md §15.
|
||||||
'version': '14.0.0.5.0',
|
'version': '14.0.0.5.1',
|
||||||
'summary': 'AI-powered blog post generation with multi-LLM support, scheduling, and social media copy',
|
'summary': 'AI-powered blog post generation with multi-LLM support, scheduling, and social media copy',
|
||||||
'description': """
|
'description': """
|
||||||
ITSulu Blog Publisher
|
ITSulu Blog Publisher
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue