Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docsource/modules180-190.rst
Original file line number Diff line number Diff line change
Expand Up @@ -772,7 +772,7 @@ Module coverage 18.0 -> 19.0
+---------------------------------------------------+----------------------+-------------------------------------------------+
| onboarding |Nothing to do | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| partner_autocomplete | | |
| partner_autocomplete |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| |new| partnership | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# Copyright 2026 ledoent
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from openupgradelib import openupgrade

# Fields the 18.0 partner_autocomplete module added that no longer exist
# anywhere in 19.0 (verified: not defined on res.partner, res.company, or
# any partner_autocomplete model). Per upgrade_analysis.txt:
# res.company.partner_gid : DEL
# res.partner.additional_info: DEL
# res.partner.partner_gid : DEL
# Odoo's standard registry rebuild does not prune the stale ir_model_fields
# rows when the donor module is upgraded; the rows + matching ir_ui_view
# records (also DEL'd in 19.0 per analysis:
# view_partner_simple_form_inherit_partner_autocomplete
# view_res_partner_form_inherit_partner_autocomplete) survive and trip
# cross-cutting view validation later in the same migration run
# (reproduced on l10n_ae/data/account_tax_report_data.xml).
_obsolete_view_xmlids = [
"partner_autocomplete.view_partner_simple_form_inherit_partner_autocomplete",
"partner_autocomplete.view_res_partner_form_inherit_partner_autocomplete",
]


def cleanup_obsolete_partner_autocomplete_records(env):
"""
Drop the orphan ir_ui_view records for fields the 18.0
partner_autocomplete module added that don't exist in 19.0; cascade
to inheriting children so the helper can't silently fall back to
noupdate=True and leave the validation trap in place. The stale
ir_model_fields rows need no explicit delete (the helper can't
unlink non-manual fields; the module's own update prunes them).
See upgrade_analysis_work.txt for the full block.
"""
openupgrade.delete_records_safely_by_xml_id(
env, _obsolete_view_xmlids, delete_childs=True
)


@openupgrade.migrate()
def migrate(env, version):
cleanup_obsolete_partner_autocomplete_records(env)
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
---Models in module 'partner_autocomplete'---
obsolete model res.partner.autocomplete.sync

# NOTHING TO DO: standard module-removal flow handles the table drop

---Fields in module 'partner_autocomplete'---
partner_autocomplete / res.company / partner_gid (integer) : DEL
partner_autocomplete / res.partner / additional_info (char) : DEL
partner_autocomplete / res.partner / partner_gid (integer) : DEL

# DONE: orphan inheritance views (referenced under XML records below)
# deleted in pre-migration via cleanup_obsolete_partner_autocomplete_records,
# cascading to inheriting children; the stale ir_model_fields rows are
# pruned by the module's own update. Without the view delete, the rows
# survive the standard module upgrade and trip cross-cutting view
# validation when later modules' data XML loads (reproduced on
# l10n_ae/data/account_tax_report_data.xml:3 with the error
# 'Field partner_gid does not exist in model res.partner').

partner_autocomplete / res.partner.autocomplete.sync / partner_id (many2one) : DEL relation: res.partner
partner_autocomplete / res.partner.autocomplete.sync / synched (boolean) : DEL

# NOTHING TO DO: covered by the obsolete-model removal above

---XML records in module 'partner_autocomplete'---
DEL ir.cron: partner_autocomplete.ir_cron_partner_autocomplete
DEL ir.model.access: partner_autocomplete.access_partner_autocomplete_sync_portal
DEL ir.model.access: partner_autocomplete.access_partner_autocomplete_sync_system
DEL ir.model.access: partner_autocomplete.access_partner_autocomplete_sync_user

# NOTHING TO DO: deleted by standard module upgrade

DEL ir.ui.view: partner_autocomplete.view_partner_simple_form_inherit_partner_autocomplete
DEL ir.ui.view: partner_autocomplete.view_res_partner_form_inherit_partner_autocomplete

# DONE: explicitly deleted in pre-migration. Without this, the views
# survive the standard upgrade (Odoo only deletes views whose xml_id
# is in the noupdate-cleanup queue, and these were noupdate=False) and
# their arch_db retains stale field references that block later loads.
Loading