Skip to content
Closed
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
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# 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_field_xmlids = [
"partner_autocomplete.field_res_company__partner_gid",
"partner_autocomplete.field_res_partner__additional_info",
"partner_autocomplete.field_res_partner__partner_gid",
]

_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 stale ir_model_fields rows and orphan ir_ui_view records for
fields/views the 18.0 partner_autocomplete module added that don't
exist in 19.0. See upgrade_analysis_work.txt for the full block.
"""
openupgrade.delete_records_safely_by_xml_id(
env,
_obsolete_field_xmlids + _obsolete_view_xmlids,
)


@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,38 @@
---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: stale ir_model_fields rows and the orphan inheritance views
# (referenced under XML records below) are deleted in pre-migration
# via cleanup_obsolete_partner_autocomplete_records. Without this, 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