Skip to content

[fork-CI] [20.0][MIG] spreadsheet_oca: Migration to 20.0 - #7

Draft
dnplkndll wants to merge 96 commits into
20.0from
20.0-mig-spreadsheet_oca
Draft

dnplkndll wants to merge 96 commits into
20.0from
20.0-mig-spreadsheet_oca

Conversation

@dnplkndll

Copy link
Copy Markdown

Port of spreadsheet_oca from 19.0 to 20.0. Follows the OCA migration guide.

AI-assisted (Claude Code); every change reviewed, tested, and owned by the author.

etobella and others added 30 commits September 29, 2026 13:09
With this change we are adding an extra layer of security. Without it, any user was able to sniff how all happened using something like:

    const any_spreadsheet_id = 1234;
    const channel = "spreadsheet_oca;spreadsheet.spreadsheet;" + any_spreadsheet_id;
    bus_service.addChannel(channel);
    bus_service.addEventListener("spreadsheet_oca", (message) => /* every revision arrives here */

With the change, we verify the access to the model with a similar logic to `web_editor` fields
commands

Steps:
1. Open spreadsheet
2. Press command Ctrl + Z
3. F5 (refresh browse)

An error occurred:
Operation undefined not found

Because missing key `undoneRevisionId` / `redoneRevisionId` in revisions
data

Solutions:
Save all spreadsheet message in commands field
Currently translated at 100.0% (83 of 83 strings)

Translation: spreadsheet-16.0/spreadsheet-16.0-spreadsheet_oca
Translate-URL: https://translation.odoo-community.org/projects/spreadsheet-16-0/spreadsheet-16-0-spreadsheet_oca/it/
Steps to reproduce the problem:

1. Go to a pivot
2. Group by something on the cols or on the rows
3. Create a spreadsheet with that info

The pivot is imported on the initial state
Currently translated at 100.0% (85 of 85 strings)

Translation: spreadsheet-16.0/spreadsheet-16.0-spreadsheet_oca
Translate-URL: https://translation.odoo-community.org/projects/spreadsheet-16-0/spreadsheet-16-0-spreadsheet_oca/it/
When adding a pivot table to a spreadsheet, it
does not maintain the specified order because the
sortedColumn option is not being completed.

Steps to reproduce the issue:

1. Go to a pivot table
2. Change the default order
3. Add to the spreadsheet

The added table will not have preserved the order.
CarlosRoca13 and others added 11 commits September 29, 2026 13:09
When a pivot has a sort defined and the data of the pivot is opened an error is thrown because the data is not processed correctly.

By doing this changes, we adapt the code to the new way of process the pivot data and the error does not being thrown anymore.
With this changes we are adding:
1. Include children records when it is possible
2. Add default values for the filter
3. If the model is for users allow set the current user by default
4. Allow to restrict values with a domain
Currently translated at 100.0% (166 of 166 strings)

Translation: spreadsheet-18.0/spreadsheet-18.0-spreadsheet_oca
Translate-URL: https://translation.odoo-community.org/projects/spreadsheet-18-0/spreadsheet-18-0-spreadsheet_oca/it/
Currently translated at 59.0% (98 of 166 strings)

Translation: spreadsheet-18.0/spreadsheet-18.0-spreadsheet_oca
Translate-URL: https://translation.odoo-community.org/projects/spreadsheet-18-0/spreadsheet-18-0-spreadsheet_oca/es/
Currently translated at 100.0% (166 of 166 strings)

Translation: spreadsheet-18.0/spreadsheet-18.0-spreadsheet_oca
Translate-URL: https://translation.odoo-community.org/projects/spreadsheet-18-0/spreadsheet-18-0-spreadsheet_oca/es/
Currently translated at 100.0% (166 of 166 strings)

Translation: spreadsheet-18.0/spreadsheet-18.0-spreadsheet_oca
Translate-URL: https://translation.odoo-community.org/projects/spreadsheet-18-0/spreadsheet-18-0-spreadsheet_oca/es/
Currently translated at 100.0% (166 of 166 strings)

Translation: spreadsheet-18.0/spreadsheet-18.0-spreadsheet_oca
Translate-URL: https://translation.odoo-community.org/projects/spreadsheet-18-0/spreadsheet-18-0-spreadsheet_oca/fr/
…lPanel

SpreadsheetControlPanel extends ControlPanel but overrides
its static components property, losing Dropdown and
DropdownItem that the parent template uses.

This causes "Cannot find the definition of component
Dropdown" when opening a spreadsheet from certain
navigation paths (e.g. from a form view).

Fix: spread parent components before adding custom ones.
Signed-off-by: Don Kendall <dkendall@ledoweb.com>
Assisted-by: Claude Opus 5
* odoo/http.py became the package odoo/http/, which re-exports only a subset: content_disposition now comes from odoo.http.stream
* security/ir.model.access.csv and the six ir.rule records fold into a single security/ir.access.csv; the rules become rows carrying a domain, with per-operation scope (reader r, contributor ru, the rest crud)
* ir.model.access is gone, so the websocket access check uses the record-level has_access()
* 20.0 binary fields hold a BinaryValue, whose .content is the decoded bytes -- where 19.0's field value was the base64 itself. So the base64 hop around spreadsheet_binary_data goes away entirely rather than moving: the field now stores the JSON, read back with BinaryValue.decode and written as BinaryBytes(json...). Keeping the hop round-trips for records this module creates but cannot read one migrated from 19.0, whose stored content is the plain JSON -- every spreadsheet and dashboard carried over fails to open with a UnicodeDecodeError from the double decode
* ir.attachment.datas is gone in 20.0 (a write to it is silently dropped), so the xlsx import reads attachment.raw
* the front end is ported to Owl 3 with odoo/upgrade_code --script owl3-migration, then finished by hand: props schemas via useProps, refs via signal.ref, and `this.` on every component-scoped name in the templates
* the copied 19.0 core control-panel and breadcrumb markup is re-chased against 20.0 core: the Dropdown toggler slot, env.isSmall, switchView, and the list/graph button inherit targets all moved

Signed-off-by: Don Kendall <dkendall@ledoweb.com>
Assisted-by: Claude Opus 5
@dnplkndll
dnplkndll force-pushed the 20.0-mig-spreadsheet_oca branch from ddbebe6 to f8487fc Compare October 1, 2026 23:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.