2026-08-08 01:29:43 +02:00
|
|
|
{
|
|
|
|
|
"version": "7.0",
|
|
|
|
|
"module": "ir",
|
|
|
|
|
"files": [
|
|
|
|
|
{
|
|
|
|
|
"file": "/home/uha4/tmp/tryton/trytond/trytond/ir/action.py",
|
|
|
|
|
"class": "ActionActWindowView",
|
|
|
|
|
"method": "__register__",
|
|
|
|
|
"line": 952,
|
|
|
|
|
"operations": [
|
|
|
|
|
{
|
|
|
|
|
"object": "table",
|
|
|
|
|
"operation": "not_null_action",
|
2026-08-08 22:32:31 +02:00
|
|
|
"tables": [
|
|
|
|
|
"ir_action_act_window_view"
|
|
|
|
|
],
|
2026-08-08 01:29:43 +02:00
|
|
|
"line": 958,
|
|
|
|
|
"args": [
|
|
|
|
|
"'sequence'",
|
|
|
|
|
"'remove'"
|
|
|
|
|
],
|
|
|
|
|
"kwargs": {},
|
|
|
|
|
"code": "table.not_null_action('sequence', 'remove')",
|
|
|
|
|
"phase": "after_super"
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"file": "/home/uha4/tmp/tryton/trytond/trytond/ir/action.py",
|
|
|
|
|
"class": "ActionActWindowDomain",
|
|
|
|
|
"method": "__register__",
|
|
|
|
|
"line": 1001,
|
|
|
|
|
"operations": [
|
|
|
|
|
{
|
|
|
|
|
"object": "table",
|
|
|
|
|
"operation": "not_null_action",
|
2026-08-08 22:32:31 +02:00
|
|
|
"tables": [
|
|
|
|
|
"ir_action_act_window_domain"
|
|
|
|
|
],
|
2026-08-08 01:29:43 +02:00
|
|
|
"line": 1007,
|
|
|
|
|
"args": [
|
|
|
|
|
"'sequence'",
|
|
|
|
|
"'remove'"
|
|
|
|
|
],
|
|
|
|
|
"kwargs": {},
|
|
|
|
|
"code": "table.not_null_action('sequence', 'remove')",
|
|
|
|
|
"phase": "after_super"
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"file": "/home/uha4/tmp/tryton/trytond/trytond/ir/cron.py",
|
|
|
|
|
"class": "Cron",
|
|
|
|
|
"method": "__register__",
|
|
|
|
|
"line": 92,
|
|
|
|
|
"operations": [
|
|
|
|
|
{
|
|
|
|
|
"object": "table_h",
|
|
|
|
|
"operation": "not_null_action",
|
2026-08-08 22:32:31 +02:00
|
|
|
"tables": [
|
|
|
|
|
"ir_cron"
|
|
|
|
|
],
|
2026-08-08 01:29:43 +02:00
|
|
|
"line": 103,
|
|
|
|
|
"args": [
|
|
|
|
|
"'next_call'",
|
|
|
|
|
"'remove'"
|
|
|
|
|
],
|
|
|
|
|
"kwargs": {},
|
|
|
|
|
"code": "table_h.not_null_action('next_call', 'remove')",
|
|
|
|
|
"phase": "after_super"
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"file": "/home/uha4/tmp/tryton/trytond/trytond/ir/export.py",
|
|
|
|
|
"class": "Export",
|
|
|
|
|
"method": "__register__",
|
|
|
|
|
"line": 56,
|
|
|
|
|
"operations": [
|
|
|
|
|
{
|
|
|
|
|
"object": "cursor",
|
|
|
|
|
"operation": "execute",
|
2026-08-08 22:32:31 +02:00
|
|
|
"tables": [
|
|
|
|
|
"ir_export"
|
|
|
|
|
],
|
2026-08-08 01:29:43 +02:00
|
|
|
"line": 67,
|
|
|
|
|
"args": [
|
|
|
|
|
"*table.update([table.user], [table.create_uid])"
|
|
|
|
|
],
|
|
|
|
|
"kwargs": {},
|
2026-08-09 00:47:23 +02:00
|
|
|
"code": "(Transaction().connection.cursor()).execute(*table.update([table.user], [table.create_uid]))",
|
2026-08-08 01:29:43 +02:00
|
|
|
"phase": "after_super",
|
|
|
|
|
"condition": "not user_exists"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"object": "table",
|
|
|
|
|
"operation": "update",
|
2026-08-08 22:32:31 +02:00
|
|
|
"tables": [
|
|
|
|
|
"ir_export"
|
|
|
|
|
],
|
2026-08-08 01:29:43 +02:00
|
|
|
"line": 67,
|
|
|
|
|
"args": [
|
|
|
|
|
"[table.user]",
|
|
|
|
|
"[table.create_uid]"
|
|
|
|
|
],
|
|
|
|
|
"kwargs": {},
|
|
|
|
|
"code": "table.update([table.user], [table.create_uid])",
|
|
|
|
|
"phase": "after_super",
|
|
|
|
|
"condition": "not user_exists"
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"file": "/home/uha4/tmp/tryton/trytond/trytond/ir/model.py",
|
|
|
|
|
"class": "ModelButton",
|
|
|
|
|
"method": "__register__",
|
|
|
|
|
"line": 887,
|
|
|
|
|
"operations": [
|
|
|
|
|
{
|
|
|
|
|
"object": "table_h",
|
|
|
|
|
"operation": "drop_constraint",
|
2026-08-08 22:32:31 +02:00
|
|
|
"tables": [
|
|
|
|
|
"ir_model_button"
|
|
|
|
|
],
|
2026-08-08 01:29:43 +02:00
|
|
|
"line": 893,
|
|
|
|
|
"args": [
|
|
|
|
|
"'name_model_uniq'"
|
|
|
|
|
],
|
|
|
|
|
"kwargs": {},
|
|
|
|
|
"code": "table_h.drop_constraint('name_model_uniq')",
|
|
|
|
|
"phase": "after_super"
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"file": "/home/uha4/tmp/tryton/trytond/trytond/ir/model.py",
|
|
|
|
|
"class": "ModelData",
|
|
|
|
|
"method": "__register__",
|
|
|
|
|
"line": 1219,
|
|
|
|
|
"operations": [
|
|
|
|
|
{
|
|
|
|
|
"object": "table_h",
|
|
|
|
|
"operation": "not_null_action",
|
2026-08-08 22:32:31 +02:00
|
|
|
"tables": [
|
|
|
|
|
"ir_model_data"
|
|
|
|
|
],
|
2026-08-08 01:29:43 +02:00
|
|
|
"line": 1225,
|
|
|
|
|
"args": [
|
|
|
|
|
"'db_id'"
|
|
|
|
|
],
|
|
|
|
|
"kwargs": {
|
|
|
|
|
"action": "'remove'"
|
|
|
|
|
},
|
|
|
|
|
"code": "table_h.not_null_action('db_id', action='remove')",
|
|
|
|
|
"phase": "after_super"
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"file": "/home/uha4/tmp/tryton/trytond/trytond/ir/module.py",
|
|
|
|
|
"class": "ModuleConfigWizardItem",
|
|
|
|
|
"method": "__register__",
|
|
|
|
|
"line": 323,
|
|
|
|
|
"operations": [
|
|
|
|
|
{
|
|
|
|
|
"object": "table",
|
|
|
|
|
"operation": "not_null_action",
|
2026-08-08 22:32:31 +02:00
|
|
|
"tables": [
|
|
|
|
|
"ir_module_config_wizard_item"
|
|
|
|
|
],
|
2026-08-08 01:29:43 +02:00
|
|
|
"line": 329,
|
|
|
|
|
"args": [
|
|
|
|
|
"'sequence'",
|
|
|
|
|
"'remove'"
|
|
|
|
|
],
|
|
|
|
|
"kwargs": {},
|
|
|
|
|
"code": "table.not_null_action('sequence', 'remove')",
|
|
|
|
|
"phase": "after_super"
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"file": "/home/uha4/tmp/tryton/trytond/trytond/ir/sequence.py",
|
|
|
|
|
"class": "SequenceType",
|
|
|
|
|
"method": "__register__",
|
|
|
|
|
"line": 41,
|
|
|
|
|
"operations": [
|
|
|
|
|
{
|
|
|
|
|
"object": "table_h",
|
|
|
|
|
"operation": "not_null_action",
|
2026-08-08 22:32:31 +02:00
|
|
|
"tables": [
|
|
|
|
|
"ir_sequence_type"
|
|
|
|
|
],
|
2026-08-08 01:29:43 +02:00
|
|
|
"line": 47,
|
|
|
|
|
"args": [
|
|
|
|
|
"'code'"
|
|
|
|
|
],
|
|
|
|
|
"kwargs": {
|
|
|
|
|
"action": "'remove'"
|
|
|
|
|
},
|
|
|
|
|
"code": "table_h.not_null_action('code', action='remove')",
|
|
|
|
|
"phase": "after_super"
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"file": "/home/uha4/tmp/tryton/trytond/trytond/ir/sequence.py",
|
|
|
|
|
"class": "Sequence",
|
|
|
|
|
"method": "__register__",
|
|
|
|
|
"line": 122,
|
|
|
|
|
"operations": [
|
|
|
|
|
{
|
|
|
|
|
"object": "cursor",
|
|
|
|
|
"operation": "execute",
|
2026-08-08 22:32:31 +02:00
|
|
|
"tables": [
|
|
|
|
|
"ir_sequence",
|
|
|
|
|
"ir_sequence_type"
|
|
|
|
|
],
|
2026-08-08 01:29:43 +02:00
|
|
|
"line": 135,
|
|
|
|
|
"args": [
|
|
|
|
|
"*table.update([table.sequence_type], sequence_type.select(sequence_type.id, where=sequence_type.code == table.code))"
|
|
|
|
|
],
|
|
|
|
|
"kwargs": {},
|
2026-08-09 00:47:23 +02:00
|
|
|
"code": "(Transaction().connection.cursor()).execute(*table.update(\n [table.sequence_type],\n sequence_type.select(\n sequence_type.id,\n where=sequence_type.code == table.code)))",
|
2026-08-08 01:29:43 +02:00
|
|
|
"phase": "after_super",
|
|
|
|
|
"condition": "table_h.column_exist('code')"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"object": "table",
|
|
|
|
|
"operation": "update",
|
2026-08-08 22:32:31 +02:00
|
|
|
"tables": [
|
|
|
|
|
"ir_sequence",
|
|
|
|
|
"ir_sequence_type"
|
|
|
|
|
],
|
2026-08-08 01:29:43 +02:00
|
|
|
"line": 135,
|
|
|
|
|
"args": [
|
|
|
|
|
"[table.sequence_type]",
|
|
|
|
|
"sequence_type.select(sequence_type.id, where=sequence_type.code == table.code)"
|
|
|
|
|
],
|
|
|
|
|
"kwargs": {},
|
2026-08-09 00:47:23 +02:00
|
|
|
"code": "table.update(\n [table.sequence_type],\n sequence_type.select(\n sequence_type.id,\n where=sequence_type.code == table.code))",
|
2026-08-08 01:29:43 +02:00
|
|
|
"phase": "after_super",
|
|
|
|
|
"condition": "table_h.column_exist('code')"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"object": "sequence_type",
|
|
|
|
|
"operation": "select",
|
2026-08-08 22:32:31 +02:00
|
|
|
"tables": [
|
|
|
|
|
"ir_sequence_type"
|
|
|
|
|
],
|
2026-08-08 01:29:43 +02:00
|
|
|
"line": 137,
|
|
|
|
|
"args": [
|
|
|
|
|
"sequence_type.id"
|
|
|
|
|
],
|
|
|
|
|
"kwargs": {
|
|
|
|
|
"where": "sequence_type.code == table.code"
|
|
|
|
|
},
|
2026-08-09 00:47:23 +02:00
|
|
|
"code": "sequence_type.select(\n sequence_type.id,\n where=sequence_type.code == table.code)",
|
2026-08-08 01:29:43 +02:00
|
|
|
"phase": "after_super",
|
|
|
|
|
"condition": "table_h.column_exist('code')"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"object": "table_h",
|
|
|
|
|
"operation": "drop_column",
|
2026-08-08 22:32:31 +02:00
|
|
|
"tables": [
|
|
|
|
|
"ir_sequence"
|
|
|
|
|
],
|
2026-08-08 01:29:43 +02:00
|
|
|
"line": 140,
|
|
|
|
|
"args": [
|
|
|
|
|
"'code'"
|
|
|
|
|
],
|
|
|
|
|
"kwargs": {},
|
|
|
|
|
"code": "table_h.drop_column('code')",
|
|
|
|
|
"phase": "after_super",
|
|
|
|
|
"condition": "table_h.column_exist('code')"
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"file": "/home/uha4/tmp/tryton/trytond/trytond/ir/translation.py",
|
|
|
|
|
"class": "Translation",
|
|
|
|
|
"method": "__register__",
|
|
|
|
|
"line": 115,
|
|
|
|
|
"operations": [
|
|
|
|
|
{
|
|
|
|
|
"object": "table",
|
|
|
|
|
"operation": "drop_constraint",
|
2026-08-08 22:32:31 +02:00
|
|
|
"tables": [
|
|
|
|
|
"ir_translation"
|
|
|
|
|
],
|
2026-08-08 01:29:43 +02:00
|
|
|
"line": 120,
|
|
|
|
|
"args": [
|
|
|
|
|
"'translation_md5_uniq'"
|
|
|
|
|
],
|
|
|
|
|
"kwargs": {},
|
|
|
|
|
"code": "table.drop_constraint('translation_md5_uniq')",
|
|
|
|
|
"phase": "before_super",
|
|
|
|
|
"condition": "table.column_exist('src_md5')"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"object": "table",
|
|
|
|
|
"operation": "drop_column",
|
2026-08-08 22:32:31 +02:00
|
|
|
"tables": [
|
|
|
|
|
"ir_translation"
|
|
|
|
|
],
|
2026-08-08 01:29:43 +02:00
|
|
|
"line": 121,
|
|
|
|
|
"args": [
|
|
|
|
|
"'src_md5'"
|
|
|
|
|
],
|
|
|
|
|
"kwargs": {},
|
|
|
|
|
"code": "table.drop_column('src_md5')",
|
|
|
|
|
"phase": "before_super",
|
|
|
|
|
"condition": "table.column_exist('src_md5')"
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"file": "/home/uha4/tmp/tryton/trytond/trytond/ir/trigger.py",
|
|
|
|
|
"class": "Trigger",
|
|
|
|
|
"method": "__register__",
|
|
|
|
|
"line": 79,
|
|
|
|
|
"operations": [
|
|
|
|
|
{
|
|
|
|
|
"object": "model",
|
|
|
|
|
"operation": "select",
|
2026-08-08 22:32:31 +02:00
|
|
|
"tables": [
|
|
|
|
|
"ir_model"
|
|
|
|
|
],
|
2026-08-08 01:29:43 +02:00
|
|
|
"line": 92,
|
|
|
|
|
"args": [
|
|
|
|
|
"model.model"
|
|
|
|
|
],
|
|
|
|
|
"kwargs": {
|
|
|
|
|
"where": "model.id == sql_table.action_model"
|
|
|
|
|
},
|
2026-08-09 00:47:23 +02:00
|
|
|
"code": "model.select(\n model.model, where=model.id == sql_table.(model.select(\n model.model, where=model.id == sql_table.action_model)))",
|
2026-08-08 01:29:43 +02:00
|
|
|
"phase": "after_super",
|
|
|
|
|
"condition": "table_h.column_exist('action_model') and table_h.column_exist('action_function')"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"object": "cursor",
|
|
|
|
|
"operation": "execute",
|
2026-08-08 22:32:31 +02:00
|
|
|
"tables": [
|
|
|
|
|
"ir_trigger"
|
|
|
|
|
],
|
2026-08-08 01:29:43 +02:00
|
|
|
"line": 94,
|
|
|
|
|
"args": [
|
|
|
|
|
"*sql_table.update([sql_table.action], [Concat(action_model, Concat('|', sql_table.action_function))])"
|
|
|
|
|
],
|
|
|
|
|
"kwargs": {},
|
2026-08-09 00:47:23 +02:00
|
|
|
"code": "(Transaction().connection.cursor()).execute(*sql_table.update(\n [sql_table.action],\n [Concat((model.select(\n model.model, where=model.id == sql_table.action_model)), Concat(\n '|', sql_table.action_function))]))",
|
2026-08-08 01:29:43 +02:00
|
|
|
"phase": "after_super",
|
|
|
|
|
"condition": "table_h.column_exist('action_model') and table_h.column_exist('action_function')"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"object": "sql_table",
|
|
|
|
|
"operation": "update",
|
2026-08-08 22:32:31 +02:00
|
|
|
"tables": [
|
|
|
|
|
"ir_trigger"
|
|
|
|
|
],
|
2026-08-08 01:29:43 +02:00
|
|
|
"line": 94,
|
|
|
|
|
"args": [
|
|
|
|
|
"[sql_table.action]",
|
|
|
|
|
"[Concat(action_model, Concat('|', sql_table.action_function))]"
|
|
|
|
|
],
|
|
|
|
|
"kwargs": {},
|
2026-08-09 00:47:23 +02:00
|
|
|
"code": "sql_table.update(\n [sql_table.action],\n [Concat((model.select(\n model.model, where=model.id == sql_table.action_model)), Concat(\n '|', sql_table.action_function))])",
|
2026-08-08 01:29:43 +02:00
|
|
|
"phase": "after_super",
|
|
|
|
|
"condition": "table_h.column_exist('action_model') and table_h.column_exist('action_function')"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"object": "table_h",
|
|
|
|
|
"operation": "drop_column",
|
2026-08-08 22:32:31 +02:00
|
|
|
"tables": [
|
|
|
|
|
"ir_trigger"
|
|
|
|
|
],
|
2026-08-08 01:29:43 +02:00
|
|
|
"line": 98,
|
|
|
|
|
"args": [
|
|
|
|
|
"'action_model'"
|
|
|
|
|
],
|
|
|
|
|
"kwargs": {},
|
2026-08-09 00:47:23 +02:00
|
|
|
"code": "table_h.drop_column('(model.select(\n model.model, where=model.id == sql_table.action_model))')",
|
2026-08-08 01:29:43 +02:00
|
|
|
"phase": "after_super",
|
|
|
|
|
"condition": "table_h.column_exist('action_model') and table_h.column_exist('action_function')"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"object": "table_h",
|
|
|
|
|
"operation": "drop_column",
|
2026-08-08 22:32:31 +02:00
|
|
|
"tables": [
|
|
|
|
|
"ir_trigger"
|
|
|
|
|
],
|
2026-08-08 01:29:43 +02:00
|
|
|
"line": 99,
|
|
|
|
|
"args": [
|
|
|
|
|
"'action_function'"
|
|
|
|
|
],
|
|
|
|
|
"kwargs": {},
|
|
|
|
|
"code": "table_h.drop_column('action_function')",
|
|
|
|
|
"phase": "after_super",
|
|
|
|
|
"condition": "table_h.column_exist('action_model') and table_h.column_exist('action_function')"
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"file": "/home/uha4/tmp/tryton/trytond/trytond/ir/ui/icon.py",
|
|
|
|
|
"class": "Icon",
|
|
|
|
|
"method": "__register__",
|
|
|
|
|
"line": 31,
|
|
|
|
|
"operations": [
|
|
|
|
|
{
|
|
|
|
|
"object": "table",
|
|
|
|
|
"operation": "not_null_action",
|
2026-08-08 22:32:31 +02:00
|
|
|
"tables": [
|
|
|
|
|
"ir_ui_icon"
|
|
|
|
|
],
|
2026-08-08 01:29:43 +02:00
|
|
|
"line": 37,
|
|
|
|
|
"args": [
|
|
|
|
|
"'sequence'",
|
|
|
|
|
"'remove'"
|
|
|
|
|
],
|
|
|
|
|
"kwargs": {},
|
|
|
|
|
"code": "table.not_null_action('sequence', 'remove')",
|
|
|
|
|
"phase": "after_super"
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"file": "/home/uha4/tmp/tryton/trytond/trytond/ir/ui/view.py",
|
|
|
|
|
"class": "ViewSearch",
|
|
|
|
|
"method": "__register__",
|
|
|
|
|
"line": 616,
|
|
|
|
|
"operations": [
|
|
|
|
|
{
|
|
|
|
|
"object": "table_h",
|
|
|
|
|
"operation": "not_null_action",
|
2026-08-08 22:32:31 +02:00
|
|
|
"tables": [
|
|
|
|
|
"ir_ui_view_search"
|
|
|
|
|
],
|
2026-08-08 01:29:43 +02:00
|
|
|
"line": 621,
|
|
|
|
|
"args": [
|
|
|
|
|
"'user'",
|
|
|
|
|
"'remove'"
|
|
|
|
|
],
|
|
|
|
|
"kwargs": {},
|
|
|
|
|
"code": "table_h.not_null_action('user', 'remove')",
|
|
|
|
|
"phase": "after_super"
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
}
|