You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
If particular xml don't have noupdate marked
but parent ``data`` node have noupdate in that
case from update_records_from_xml creating record as
noupdate ``false`` which is causing issue in future
upgrade because it going for delete. For preventing
such case adding noupdate flag to record and inherit
created record acccoring to this commit
odoo/odoo@ef709fd#diff-7144f88ea32f36feb17ce1b8dda7dee1631f5ada34075414587df3948c6b3d1bL4098-R4118
by that
``//data`` node or that ``xml node`` itself.
use case:
client db don't have the ``documents.document_internal_folder``
https://github.com/odoo/enterprise/blob/6c677f388c934e3fc545fc7cb2f9d65a958433da/documents/data/documents_document_data.xml#L2-L18
xmlid which is created when migrated to 18.0 from
this script
https://github.com/odoo/upgrade/blob/9327a2c12d9faf67d71f09bbe4d91e6105c75dca/migrations/documents/saas~17.5.1.4/post-migrate.py#L24
with noupdate false and because data node have noupdate true
but particular xml don't have noupdate that is why it created
as noupdate false and other inherit records also with noupdate
and after migrating from onwards version related to that
mail.alias records xml creating according to this
https://github.com/odoo/odoo/blob/9822f5cd1fd3ac60689fc5e3101e5f6fa6a5722d/odoo/models.py#L5514
and later on version in 18.3 if related inherit model is changed
but still some how use case of those records for preventing in that case.
before upgrade
```
timer_test_document_test=# select * from ir_model_data where name like '%document_internal_folder%'
;
id | create_uid | create_date | write_date | write_uid | res_id | noupdate | name | module | model
----+------------+-------------+------------+-----------+--------+----------+------+--------+-------
(0 rows)
```
before fix
```
timer_test_document_test=# select * from ir_model_data where name like '%document_internal_folder%'
;
id | create_uid | create_date | write_date | write_uid | res_id | noupdate | name | module | model
-------+------------+----------------------------+----------------------------+-----------+--------+----------+-------------------------------------+-----------+--------------------
39576 | | 2025-06-19 13:38:37.987267 | 2025-06-19 13:38:37.987267 | | 20 | f | document_internal_folder_mail_alias | documents | mail.alias
39577 | | 2025-06-19 13:38:37.987267 | 2025-06-19 13:38:37.987267 | | 20 | f | document_internal_folder | documents | documents.document
```
after fix
```
timer_test_document_test=# select * from ir_model_data where name like '%document_internal_folder%'
;
id | create_uid | create_date | write_date | write_uid | res_id | noupdate | name | module | model
-------+------------+----------------------------+----------------------------+-----------+--------+----------+-------------------------------------+-----------+--------------------
39576 | | 2025-06-19 13:41:40.343454 | 2025-06-19 13:41:40.343454 | | 20 | t | document_internal_folder_mail_alias | documents | mail.alias
39577 | | 2025-06-19 13:41:40.343454 | 2025-06-19 13:41:40.343454 | | 20 | t | document_internal_folder | documents | documents.document
```
```
Traceback (most recent call last):
File "/home/odoo/src/odoo/saas-18.3/odoo/service/server.py", line 1396, in preload_registries
registry = Registry.new(dbname, update_module=update_module, install_modules=config['init'], upgrade_modules=config['update'])
File "<decorator-gen-6>", line 2, in new
File "/home/odoo/src/odoo/saas-18.3/odoo/tools/func.py", line 83, in locked
return func(inst, *args, **kwargs)
File "/home/odoo/src/odoo/saas-18.3/odoo/orm/registry.py", line 167, in new
load_modules(
File "/home/odoo/src/odoo/saas-18.3/odoo/modules/loading.py", line 509, in load_modules
env['ir.model.data']._process_end(registry.updated_modules)
File "/tmp/tmp2ipekce9/migrations/base/0.0.0/pre-models-no-model-data-delete.py", line 108, in _process_end
return super(IrModelData, self)._process_end(modules)
File "/home/odoo/src/odoo/saas-18.3/odoo/addons/base/models/ir_model.py", line 2589, in _process_end
self._process_end_unlink_record(record)
File "/home/odoo/src/odoo/saas-18.3/addons/website/models/ir_model_data.py", line 35, in _process_end_unlink_record
return super()._process_end_unlink_record(record)
File "/home/odoo/src/odoo/saas-18.3/odoo/addons/base/models/ir_model.py", line 2518, in _process_end_unlink_record
record.unlink()
File "/home/odoo/src/odoo/saas-18.3/odoo/orm/models.py", line 3913, in unlink
cr.execute(SQL(
File "/home/odoo/src/odoo/saas-18.3/odoo/sql_db.py", line 422, in execute
self._obj.execute(query, params)
psycopg2.errors.ForeignKeyViolation: update or delete on table "mail_alias" violates foreign key constraint "documents_document_alias_id_fkey" on table "documents_document"
DETAIL: Key (id)=(40) is still referenced from table "documents_document".
```
upg-2987024
opw-4874805
0 commit comments