Ausertung von schleifen und Helperfunktionen ergänzt in extract.py

This commit is contained in:
2026-08-09 20:56:24 +02:00
parent 5f11c77ddf
commit 5d227d2f61
44 changed files with 1713 additions and 5 deletions
+26 -1
View File
@@ -1,5 +1,30 @@
{ {
"version": "5.0", "version": "5.0",
"module": "currency", "module": "currency",
"files": [] "files": [
{
"module": "currency",
"file": "currency.py",
"class": "Currency",
"method": "__register__",
"line": 55,
"operations": [
{
"object": "table_h",
"operation": "not_null_action",
"tables": [
"currency_currency"
],
"line": 64,
"args": [
"col",
"'remove'"
],
"kwargs": {},
"code": "table_h.not_null_action(col, 'remove')",
"phase": "after_super"
}
]
}
]
} }
+33
View File
@@ -607,6 +607,39 @@
"phase": "after_super", "phase": "after_super",
"condition": "table.column_exist('minimum_delay')" "condition": "table.column_exist('minimum_delay')"
}, },
{
"object": "cursor",
"operation": "execute",
"tables": [
"ir_trigger"
],
"line": 89,
"args": [
"*sql_table.update([sql_table.minimum_time_delay], [delay], where=sql_table.id == id_)"
],
"kwargs": {},
"code": "(Transaction().connection.cursor()).execute(*sql_table.update(\n [sql_table.minimum_time_delay],\n [(datetime.timedelta(hours=delay))],\n where=sql_table.id == id_))",
"phase": "after_super",
"condition": "table.column_exist('minimum_delay')"
},
{
"object": "sql_table",
"operation": "update",
"tables": [
"ir_trigger"
],
"line": 89,
"args": [
"[sql_table.minimum_time_delay]",
"[delay]"
],
"kwargs": {
"where": "sql_table.id == id_"
},
"code": "sql_table.update(\n [sql_table.minimum_time_delay],\n [(datetime.timedelta(hours=delay))],\n where=sql_table.id == id_)",
"phase": "after_super",
"condition": "table.column_exist('minimum_delay')"
},
{ {
"object": "table", "object": "table",
"operation": "drop_column", "operation": "drop_column",
+26 -1
View File
@@ -1,5 +1,30 @@
{ {
"version": "5.2", "version": "5.2",
"module": "currency", "module": "currency",
"files": [] "files": [
{
"module": "currency",
"file": "currency.py",
"class": "Currency",
"method": "__register__",
"line": 53,
"operations": [
{
"object": "table_h",
"operation": "not_null_action",
"tables": [
"currency_currency"
],
"line": 62,
"args": [
"col",
"'remove'"
],
"kwargs": {},
"code": "table_h.not_null_action(col, 'remove')",
"phase": "after_super"
}
]
}
]
} }
+47
View File
@@ -337,6 +337,20 @@
"method": "__register__", "method": "__register__",
"line": 66, "line": 66,
"operations": [ "operations": [
{
"object": "table_h",
"operation": "drop_column",
"tables": [
"ir_cron"
],
"line": 74,
"args": [
"column"
],
"kwargs": {},
"code": "table_h.drop_column(column)",
"phase": "after_super"
},
{ {
"object": "table_h", "object": "table_h",
"operation": "not_null_action", "operation": "not_null_action",
@@ -740,6 +754,39 @@
"phase": "after_super", "phase": "after_super",
"condition": "table.column_exist('minimum_delay')" "condition": "table.column_exist('minimum_delay')"
}, },
{
"object": "cursor",
"operation": "execute",
"tables": [
"ir_trigger"
],
"line": 91,
"args": [
"*sql_table.update([sql_table.minimum_time_delay], [delay], where=sql_table.id == id_)"
],
"kwargs": {},
"code": "(Transaction().connection.cursor()).execute(*sql_table.update(\n [sql_table.minimum_time_delay],\n [(datetime.timedelta(hours=delay))],\n where=sql_table.id == id_))",
"phase": "after_super",
"condition": "table.column_exist('minimum_delay')"
},
{
"object": "sql_table",
"operation": "update",
"tables": [
"ir_trigger"
],
"line": 91,
"args": [
"[sql_table.minimum_time_delay]",
"[delay]"
],
"kwargs": {
"where": "sql_table.id == id_"
},
"code": "sql_table.update(\n [sql_table.minimum_time_delay],\n [(datetime.timedelta(hours=delay))],\n where=sql_table.id == id_)",
"phase": "after_super",
"condition": "table.column_exist('minimum_delay')"
},
{ {
"object": "table", "object": "table",
"operation": "drop_column", "operation": "drop_column",
+15
View File
@@ -9,6 +9,21 @@
"method": "__register__", "method": "__register__",
"line": 53, "line": 53,
"operations": [ "operations": [
{
"object": "table_h",
"operation": "not_null_action",
"tables": [
"currency_currency"
],
"line": 67,
"args": [
"col",
"'remove'"
],
"kwargs": {},
"code": "table_h.not_null_action(col, 'remove')",
"phase": "after_super"
},
{ {
"object": "cursor", "object": "cursor",
"operation": "execute", "operation": "execute",
+47
View File
@@ -337,6 +337,20 @@
"method": "__register__", "method": "__register__",
"line": 69, "line": 69,
"operations": [ "operations": [
{
"object": "table_h",
"operation": "drop_column",
"tables": [
"ir_cron"
],
"line": 77,
"args": [
"column"
],
"kwargs": {},
"code": "table_h.drop_column(column)",
"phase": "after_super"
},
{ {
"object": "table_h", "object": "table_h",
"operation": "not_null_action", "operation": "not_null_action",
@@ -740,6 +754,39 @@
"phase": "after_super", "phase": "after_super",
"condition": "table.column_exist('minimum_delay')" "condition": "table.column_exist('minimum_delay')"
}, },
{
"object": "cursor",
"operation": "execute",
"tables": [
"ir_trigger"
],
"line": 91,
"args": [
"*sql_table.update([sql_table.minimum_time_delay], [delay], where=sql_table.id == id_)"
],
"kwargs": {},
"code": "(Transaction().connection.cursor()).execute(*sql_table.update(\n [sql_table.minimum_time_delay],\n [(datetime.timedelta(hours=delay))],\n where=sql_table.id == id_))",
"phase": "after_super",
"condition": "table.column_exist('minimum_delay')"
},
{
"object": "sql_table",
"operation": "update",
"tables": [
"ir_trigger"
],
"line": 91,
"args": [
"[sql_table.minimum_time_delay]",
"[delay]"
],
"kwargs": {
"where": "sql_table.id == id_"
},
"code": "sql_table.update(\n [sql_table.minimum_time_delay],\n [(datetime.timedelta(hours=delay))],\n where=sql_table.id == id_)",
"phase": "after_super",
"condition": "table.column_exist('minimum_delay')"
},
{ {
"object": "table", "object": "table",
"operation": "drop_column", "operation": "drop_column",
+61
View File
@@ -36,6 +36,67 @@
"code": "template_lot_type.select(\n template_lot_type.template,\n distinct_on=template_lot_type.template)", "code": "template_lot_type.select(\n template_lot_type.template,\n distinct_on=template_lot_type.template)",
"phase": "after_super", "phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)" "condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
},
{
"object": "cursor",
"operation": "execute",
"tables": [],
"line": 55,
"args": [
"*template_lot_type.join(lot_type, condition=template_lot_type.type == lot_type.id).select(lot_type.code, where=template_lot_type.template == template_id)"
],
"kwargs": {},
"code": "(connection.cursor()).execute(*template_lot_type\n .join(lot_type,\n condition=template_lot_type.type == lot_type.id)\n .select(\n lot_type.code,\n where=template_lot_type.template == template_id))",
"phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
},
{
"object": "template_lot_type.join(lot_type, condition=template_lot_type.type == lot_type.id)",
"operation": "select",
"tables": [],
"line": 55,
"args": [
"lot_type.code"
],
"kwargs": {
"where": "template_lot_type.template == template_id"
},
"code": "template_lot_type\n .join(lot_type,\n condition=template_lot_type.type == lot_type.id)\n .select(\n lot_type.code,\n where=template_lot_type.template == template_id)",
"phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
},
{
"object": "cursor",
"operation": "execute",
"tables": [
"product_template"
],
"line": 62,
"args": [
"*table.update([table.lot_required], [value], where=table.id == template_id)"
],
"kwargs": {},
"code": "(connection.cursor()).execute(*table.update(\n [table.lot_required], [(cls.lot_required.sql_format([t for t, in cursor]))],\n where=table.id == template_id))",
"phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
},
{
"object": "table",
"operation": "update",
"tables": [
"product_template"
],
"line": 62,
"args": [
"[table.lot_required]",
"[value]"
],
"kwargs": {
"where": "table.id == template_id"
},
"code": "table.update(\n [table.lot_required], [(cls.lot_required.sql_format([t for t, in cursor]))],\n where=table.id == template_id)",
"phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
} }
] ]
} }
+15
View File
@@ -9,6 +9,21 @@
"method": "__register__", "method": "__register__",
"line": 51, "line": 51,
"operations": [ "operations": [
{
"object": "table_h",
"operation": "not_null_action",
"tables": [
"currency_currency"
],
"line": 65,
"args": [
"col",
"'remove'"
],
"kwargs": {},
"code": "table_h.not_null_action(col, 'remove')",
"phase": "after_super"
},
{ {
"object": "cursor", "object": "cursor",
"operation": "execute", "operation": "execute",
+47
View File
@@ -337,6 +337,20 @@
"method": "__register__", "method": "__register__",
"line": 69, "line": 69,
"operations": [ "operations": [
{
"object": "table_h",
"operation": "drop_column",
"tables": [
"ir_cron"
],
"line": 77,
"args": [
"column"
],
"kwargs": {},
"code": "table_h.drop_column(column)",
"phase": "after_super"
},
{ {
"object": "table_h", "object": "table_h",
"operation": "not_null_action", "operation": "not_null_action",
@@ -800,6 +814,39 @@
"phase": "after_super", "phase": "after_super",
"condition": "table.column_exist('minimum_delay')" "condition": "table.column_exist('minimum_delay')"
}, },
{
"object": "cursor",
"operation": "execute",
"tables": [
"ir_trigger"
],
"line": 94,
"args": [
"*sql_table.update([sql_table.minimum_time_delay], [delay], where=sql_table.id == id_)"
],
"kwargs": {},
"code": "(Transaction().connection.cursor()).execute(*sql_table.update(\n [sql_table.minimum_time_delay],\n [(datetime.timedelta(hours=delay))],\n where=sql_table.id == id_))",
"phase": "after_super",
"condition": "table.column_exist('minimum_delay')"
},
{
"object": "sql_table",
"operation": "update",
"tables": [
"ir_trigger"
],
"line": 94,
"args": [
"[sql_table.minimum_time_delay]",
"[delay]"
],
"kwargs": {
"where": "sql_table.id == id_"
},
"code": "sql_table.update(\n [sql_table.minimum_time_delay],\n [(datetime.timedelta(hours=delay))],\n where=sql_table.id == id_)",
"phase": "after_super",
"condition": "table.column_exist('minimum_delay')"
},
{ {
"object": "table", "object": "table",
"operation": "drop_column", "operation": "drop_column",
+61
View File
@@ -36,6 +36,67 @@
"code": "template_lot_type.select(\n template_lot_type.template,\n distinct_on=template_lot_type.template)", "code": "template_lot_type.select(\n template_lot_type.template,\n distinct_on=template_lot_type.template)",
"phase": "after_super", "phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)" "condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
},
{
"object": "cursor",
"operation": "execute",
"tables": [],
"line": 55,
"args": [
"*template_lot_type.join(lot_type, condition=template_lot_type.type == lot_type.id).select(lot_type.code, where=template_lot_type.template == template_id)"
],
"kwargs": {},
"code": "(connection.cursor()).execute(*template_lot_type\n .join(lot_type,\n condition=template_lot_type.type == lot_type.id)\n .select(\n lot_type.code,\n where=template_lot_type.template == template_id))",
"phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
},
{
"object": "template_lot_type.join(lot_type, condition=template_lot_type.type == lot_type.id)",
"operation": "select",
"tables": [],
"line": 55,
"args": [
"lot_type.code"
],
"kwargs": {
"where": "template_lot_type.template == template_id"
},
"code": "template_lot_type\n .join(lot_type,\n condition=template_lot_type.type == lot_type.id)\n .select(\n lot_type.code,\n where=template_lot_type.template == template_id)",
"phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
},
{
"object": "cursor",
"operation": "execute",
"tables": [
"product_template"
],
"line": 62,
"args": [
"*table.update([table.lot_required], [value], where=table.id == template_id)"
],
"kwargs": {},
"code": "(connection.cursor()).execute(*table.update(\n [table.lot_required], [(cls.lot_required.sql_format([t for t, in cursor]))],\n where=table.id == template_id))",
"phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
},
{
"object": "table",
"operation": "update",
"tables": [
"product_template"
],
"line": 62,
"args": [
"[table.lot_required]",
"[value]"
],
"kwargs": {
"where": "table.id == template_id"
},
"code": "table.update(\n [table.lot_required], [(cls.lot_required.sql_format([t for t, in cursor]))],\n where=table.id == template_id)",
"phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
} }
] ]
} }
+15
View File
@@ -9,6 +9,21 @@
"method": "__register__", "method": "__register__",
"line": 51, "line": 51,
"operations": [ "operations": [
{
"object": "table_h",
"operation": "not_null_action",
"tables": [
"currency_currency"
],
"line": 65,
"args": [
"col",
"'remove'"
],
"kwargs": {},
"code": "table_h.not_null_action(col, 'remove')",
"phase": "after_super"
},
{ {
"object": "cursor", "object": "cursor",
"operation": "execute", "operation": "execute",
+47
View File
@@ -337,6 +337,20 @@
"method": "__register__", "method": "__register__",
"line": 71, "line": 71,
"operations": [ "operations": [
{
"object": "table_h",
"operation": "drop_column",
"tables": [
"ir_cron"
],
"line": 79,
"args": [
"column"
],
"kwargs": {},
"code": "table_h.drop_column(column)",
"phase": "after_super"
},
{ {
"object": "table_h", "object": "table_h",
"operation": "not_null_action", "operation": "not_null_action",
@@ -800,6 +814,39 @@
"phase": "after_super", "phase": "after_super",
"condition": "table.column_exist('minimum_delay')" "condition": "table.column_exist('minimum_delay')"
}, },
{
"object": "cursor",
"operation": "execute",
"tables": [
"ir_trigger"
],
"line": 90,
"args": [
"*sql_table.update([sql_table.minimum_time_delay], [delay], where=sql_table.id == id_)"
],
"kwargs": {},
"code": "(Transaction().connection.cursor()).execute(*sql_table.update(\n [sql_table.minimum_time_delay],\n [(datetime.timedelta(hours=delay))],\n where=sql_table.id == id_))",
"phase": "after_super",
"condition": "table.column_exist('minimum_delay')"
},
{
"object": "sql_table",
"operation": "update",
"tables": [
"ir_trigger"
],
"line": 90,
"args": [
"[sql_table.minimum_time_delay]",
"[delay]"
],
"kwargs": {
"where": "sql_table.id == id_"
},
"code": "sql_table.update(\n [sql_table.minimum_time_delay],\n [(datetime.timedelta(hours=delay))],\n where=sql_table.id == id_)",
"phase": "after_super",
"condition": "table.column_exist('minimum_delay')"
},
{ {
"object": "table", "object": "table",
"operation": "drop_column", "operation": "drop_column",
+61
View File
@@ -36,6 +36,67 @@
"code": "template_lot_type.select(\n template_lot_type.template,\n distinct_on=template_lot_type.template)", "code": "template_lot_type.select(\n template_lot_type.template,\n distinct_on=template_lot_type.template)",
"phase": "after_super", "phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)" "condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
},
{
"object": "cursor",
"operation": "execute",
"tables": [],
"line": 55,
"args": [
"*template_lot_type.join(lot_type, condition=template_lot_type.type == lot_type.id).select(lot_type.code, where=template_lot_type.template == template_id)"
],
"kwargs": {},
"code": "(connection.cursor()).execute(*template_lot_type\n .join(lot_type,\n condition=template_lot_type.type == lot_type.id)\n .select(\n lot_type.code,\n where=template_lot_type.template == template_id))",
"phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
},
{
"object": "template_lot_type.join(lot_type, condition=template_lot_type.type == lot_type.id)",
"operation": "select",
"tables": [],
"line": 55,
"args": [
"lot_type.code"
],
"kwargs": {
"where": "template_lot_type.template == template_id"
},
"code": "template_lot_type\n .join(lot_type,\n condition=template_lot_type.type == lot_type.id)\n .select(\n lot_type.code,\n where=template_lot_type.template == template_id)",
"phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
},
{
"object": "cursor",
"operation": "execute",
"tables": [
"product_template"
],
"line": 62,
"args": [
"*table.update([table.lot_required], [value], where=table.id == template_id)"
],
"kwargs": {},
"code": "(connection.cursor()).execute(*table.update(\n [table.lot_required], [(cls.lot_required.sql_format([t for t, in cursor]))],\n where=table.id == template_id))",
"phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
},
{
"object": "table",
"operation": "update",
"tables": [
"product_template"
],
"line": 62,
"args": [
"[table.lot_required]",
"[value]"
],
"kwargs": {
"where": "table.id == template_id"
},
"code": "table.update(\n [table.lot_required], [(cls.lot_required.sql_format([t for t, in cursor]))],\n where=table.id == template_id)",
"phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
} }
] ]
} }
+15
View File
@@ -9,6 +9,21 @@
"method": "__register__", "method": "__register__",
"line": 59, "line": 59,
"operations": [ "operations": [
{
"object": "table_h",
"operation": "not_null_action",
"tables": [
"currency_currency"
],
"line": 73,
"args": [
"col",
"'remove'"
],
"kwargs": {},
"code": "table_h.not_null_action(col, 'remove')",
"phase": "after_super"
},
{ {
"object": "cursor", "object": "cursor",
"operation": "execute", "operation": "execute",
+47
View File
@@ -337,6 +337,20 @@
"method": "__register__", "method": "__register__",
"line": 84, "line": 84,
"operations": [ "operations": [
{
"object": "table_h",
"operation": "drop_column",
"tables": [
"ir_cron"
],
"line": 92,
"args": [
"column"
],
"kwargs": {},
"code": "table_h.drop_column(column)",
"phase": "after_super"
},
{ {
"object": "table_h", "object": "table_h",
"operation": "not_null_action", "operation": "not_null_action",
@@ -899,6 +913,39 @@
"phase": "after_super", "phase": "after_super",
"condition": "table.column_exist('minimum_delay')" "condition": "table.column_exist('minimum_delay')"
}, },
{
"object": "cursor",
"operation": "execute",
"tables": [
"ir_trigger"
],
"line": 90,
"args": [
"*sql_table.update([sql_table.minimum_time_delay], [delay], where=sql_table.id == id_)"
],
"kwargs": {},
"code": "(Transaction().connection.cursor()).execute(*sql_table.update(\n [sql_table.minimum_time_delay],\n [(datetime.timedelta(hours=delay))],\n where=sql_table.id == id_))",
"phase": "after_super",
"condition": "table.column_exist('minimum_delay')"
},
{
"object": "sql_table",
"operation": "update",
"tables": [
"ir_trigger"
],
"line": 90,
"args": [
"[sql_table.minimum_time_delay]",
"[delay]"
],
"kwargs": {
"where": "sql_table.id == id_"
},
"code": "sql_table.update(\n [sql_table.minimum_time_delay],\n [(datetime.timedelta(hours=delay))],\n where=sql_table.id == id_)",
"phase": "after_super",
"condition": "table.column_exist('minimum_delay')"
},
{ {
"object": "table", "object": "table",
"operation": "drop_column", "operation": "drop_column",
+61
View File
@@ -36,6 +36,67 @@
"code": "template_lot_type.select(\n template_lot_type.template,\n distinct_on=template_lot_type.template)", "code": "template_lot_type.select(\n template_lot_type.template,\n distinct_on=template_lot_type.template)",
"phase": "after_super", "phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)" "condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
},
{
"object": "cursor",
"operation": "execute",
"tables": [],
"line": 91,
"args": [
"*template_lot_type.join(lot_type, condition=template_lot_type.type == lot_type.id).select(lot_type.code, where=template_lot_type.template == template_id)"
],
"kwargs": {},
"code": "(connection.cursor()).execute(*template_lot_type\n .join(lot_type,\n condition=template_lot_type.type == lot_type.id)\n .select(\n lot_type.code,\n where=template_lot_type.template == template_id))",
"phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
},
{
"object": "template_lot_type.join(lot_type, condition=template_lot_type.type == lot_type.id)",
"operation": "select",
"tables": [],
"line": 91,
"args": [
"lot_type.code"
],
"kwargs": {
"where": "template_lot_type.template == template_id"
},
"code": "template_lot_type\n .join(lot_type,\n condition=template_lot_type.type == lot_type.id)\n .select(\n lot_type.code,\n where=template_lot_type.template == template_id)",
"phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
},
{
"object": "cursor",
"operation": "execute",
"tables": [
"product_template"
],
"line": 98,
"args": [
"*table.update([table.lot_required], [value], where=table.id == template_id)"
],
"kwargs": {},
"code": "(connection.cursor()).execute(*table.update(\n [table.lot_required], [(cls.lot_required.sql_format([t for t, in cursor]))],\n where=table.id == template_id))",
"phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
},
{
"object": "table",
"operation": "update",
"tables": [
"product_template"
],
"line": 98,
"args": [
"[table.lot_required]",
"[value]"
],
"kwargs": {
"where": "table.id == template_id"
},
"code": "table.update(\n [table.lot_required], [(cls.lot_required.sql_format([t for t, in cursor]))],\n where=table.id == template_id)",
"phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
} }
] ]
} }
+15
View File
@@ -9,6 +9,21 @@
"method": "__register__", "method": "__register__",
"line": 61, "line": 61,
"operations": [ "operations": [
{
"object": "table_h",
"operation": "not_null_action",
"tables": [
"currency_currency"
],
"line": 75,
"args": [
"col",
"'remove'"
],
"kwargs": {},
"code": "table_h.not_null_action(col, 'remove')",
"phase": "after_super"
},
{ {
"object": "cursor", "object": "cursor",
"operation": "execute", "operation": "execute",
+47
View File
@@ -337,6 +337,20 @@
"method": "__register__", "method": "__register__",
"line": 86, "line": 86,
"operations": [ "operations": [
{
"object": "table_h",
"operation": "drop_column",
"tables": [
"ir_cron"
],
"line": 94,
"args": [
"column"
],
"kwargs": {},
"code": "table_h.drop_column(column)",
"phase": "after_super"
},
{ {
"object": "table_h", "object": "table_h",
"operation": "not_null_action", "operation": "not_null_action",
@@ -899,6 +913,39 @@
"phase": "after_super", "phase": "after_super",
"condition": "table.column_exist('minimum_delay')" "condition": "table.column_exist('minimum_delay')"
}, },
{
"object": "cursor",
"operation": "execute",
"tables": [
"ir_trigger"
],
"line": 90,
"args": [
"*sql_table.update([sql_table.minimum_time_delay], [delay], where=sql_table.id == id_)"
],
"kwargs": {},
"code": "(Transaction().connection.cursor()).execute(*sql_table.update(\n [sql_table.minimum_time_delay],\n [(datetime.timedelta(hours=delay))],\n where=sql_table.id == id_))",
"phase": "after_super",
"condition": "table.column_exist('minimum_delay')"
},
{
"object": "sql_table",
"operation": "update",
"tables": [
"ir_trigger"
],
"line": 90,
"args": [
"[sql_table.minimum_time_delay]",
"[delay]"
],
"kwargs": {
"where": "sql_table.id == id_"
},
"code": "sql_table.update(\n [sql_table.minimum_time_delay],\n [(datetime.timedelta(hours=delay))],\n where=sql_table.id == id_)",
"phase": "after_super",
"condition": "table.column_exist('minimum_delay')"
},
{ {
"object": "table", "object": "table",
"operation": "drop_column", "operation": "drop_column",
+61
View File
@@ -36,6 +36,67 @@
"code": "template_lot_type.select(\n template_lot_type.template,\n distinct_on=template_lot_type.template)", "code": "template_lot_type.select(\n template_lot_type.template,\n distinct_on=template_lot_type.template)",
"phase": "after_super", "phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)" "condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
},
{
"object": "cursor",
"operation": "execute",
"tables": [],
"line": 88,
"args": [
"*template_lot_type.join(lot_type, condition=template_lot_type.type == lot_type.id).select(lot_type.code, where=template_lot_type.template == template_id)"
],
"kwargs": {},
"code": "(connection.cursor()).execute(*template_lot_type\n .join(lot_type,\n condition=template_lot_type.type == lot_type.id)\n .select(\n lot_type.code,\n where=template_lot_type.template == template_id))",
"phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
},
{
"object": "template_lot_type.join(lot_type, condition=template_lot_type.type == lot_type.id)",
"operation": "select",
"tables": [],
"line": 88,
"args": [
"lot_type.code"
],
"kwargs": {
"where": "template_lot_type.template == template_id"
},
"code": "template_lot_type\n .join(lot_type,\n condition=template_lot_type.type == lot_type.id)\n .select(\n lot_type.code,\n where=template_lot_type.template == template_id)",
"phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
},
{
"object": "cursor",
"operation": "execute",
"tables": [
"product_template"
],
"line": 95,
"args": [
"*table.update([table.lot_required], [value], where=table.id == template_id)"
],
"kwargs": {},
"code": "(connection.cursor()).execute(*table.update(\n [table.lot_required], [(cls.lot_required.sql_format([t for t, in cursor]))],\n where=table.id == template_id))",
"phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
},
{
"object": "table",
"operation": "update",
"tables": [
"product_template"
],
"line": 95,
"args": [
"[table.lot_required]",
"[value]"
],
"kwargs": {
"where": "table.id == template_id"
},
"code": "table.update(\n [table.lot_required], [(cls.lot_required.sql_format([t for t, in cursor]))],\n where=table.id == template_id)",
"phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
} }
] ]
} }
+15
View File
@@ -9,6 +9,21 @@
"method": "__register__", "method": "__register__",
"line": 59, "line": 59,
"operations": [ "operations": [
{
"object": "table_h",
"operation": "not_null_action",
"tables": [
"currency_currency"
],
"line": 73,
"args": [
"col",
"'remove'"
],
"kwargs": {},
"code": "table_h.not_null_action(col, 'remove')",
"phase": "after_super"
},
{ {
"object": "cursor", "object": "cursor",
"operation": "execute", "operation": "execute",
+47
View File
@@ -337,6 +337,20 @@
"method": "__register__", "method": "__register__",
"line": 87, "line": 87,
"operations": [ "operations": [
{
"object": "table_h",
"operation": "drop_column",
"tables": [
"ir_cron"
],
"line": 95,
"args": [
"column"
],
"kwargs": {},
"code": "table_h.drop_column(column)",
"phase": "after_super"
},
{ {
"object": "table_h", "object": "table_h",
"operation": "not_null_action", "operation": "not_null_action",
@@ -922,6 +936,39 @@
"phase": "after_super", "phase": "after_super",
"condition": "table.column_exist('minimum_delay')" "condition": "table.column_exist('minimum_delay')"
}, },
{
"object": "cursor",
"operation": "execute",
"tables": [
"ir_trigger"
],
"line": 90,
"args": [
"*sql_table.update([sql_table.minimum_time_delay], [delay], where=sql_table.id == id_)"
],
"kwargs": {},
"code": "(Transaction().connection.cursor()).execute(*sql_table.update(\n [sql_table.minimum_time_delay],\n [(datetime.timedelta(hours=delay))],\n where=sql_table.id == id_))",
"phase": "after_super",
"condition": "table.column_exist('minimum_delay')"
},
{
"object": "sql_table",
"operation": "update",
"tables": [
"ir_trigger"
],
"line": 90,
"args": [
"[sql_table.minimum_time_delay]",
"[delay]"
],
"kwargs": {
"where": "sql_table.id == id_"
},
"code": "sql_table.update(\n [sql_table.minimum_time_delay],\n [(datetime.timedelta(hours=delay))],\n where=sql_table.id == id_)",
"phase": "after_super",
"condition": "table.column_exist('minimum_delay')"
},
{ {
"object": "table", "object": "table",
"operation": "drop_column", "operation": "drop_column",
+61
View File
@@ -36,6 +36,67 @@
"code": "template_lot_type.select(\n template_lot_type.template,\n distinct_on=template_lot_type.template)", "code": "template_lot_type.select(\n template_lot_type.template,\n distinct_on=template_lot_type.template)",
"phase": "after_super", "phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)" "condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
},
{
"object": "cursor",
"operation": "execute",
"tables": [],
"line": 86,
"args": [
"*template_lot_type.join(lot_type, condition=template_lot_type.type == lot_type.id).select(lot_type.code, where=template_lot_type.template == template_id)"
],
"kwargs": {},
"code": "(connection.cursor()).execute(*template_lot_type\n .join(lot_type,\n condition=template_lot_type.type == lot_type.id)\n .select(\n lot_type.code,\n where=template_lot_type.template == template_id))",
"phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
},
{
"object": "template_lot_type.join(lot_type, condition=template_lot_type.type == lot_type.id)",
"operation": "select",
"tables": [],
"line": 86,
"args": [
"lot_type.code"
],
"kwargs": {
"where": "template_lot_type.template == template_id"
},
"code": "template_lot_type\n .join(lot_type,\n condition=template_lot_type.type == lot_type.id)\n .select(\n lot_type.code,\n where=template_lot_type.template == template_id)",
"phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
},
{
"object": "cursor",
"operation": "execute",
"tables": [
"product_template"
],
"line": 93,
"args": [
"*table.update([table.lot_required], [value], where=table.id == template_id)"
],
"kwargs": {},
"code": "(connection.cursor()).execute(*table.update(\n [table.lot_required], [(cls.lot_required.sql_format([t for t, in cursor]))],\n where=table.id == template_id))",
"phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
},
{
"object": "table",
"operation": "update",
"tables": [
"product_template"
],
"line": 93,
"args": [
"[table.lot_required]",
"[value]"
],
"kwargs": {
"where": "table.id == template_id"
},
"code": "table.update(\n [table.lot_required], [(cls.lot_required.sql_format([t for t, in cursor]))],\n where=table.id == template_id)",
"phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
} }
] ]
} }
+15
View File
@@ -9,6 +9,21 @@
"method": "__register__", "method": "__register__",
"line": 60, "line": 60,
"operations": [ "operations": [
{
"object": "table_h",
"operation": "not_null_action",
"tables": [
"currency_currency"
],
"line": 74,
"args": [
"col",
"'remove'"
],
"kwargs": {},
"code": "table_h.not_null_action(col, 'remove')",
"phase": "after_super"
},
{ {
"object": "cursor", "object": "cursor",
"operation": "execute", "operation": "execute",
+47
View File
@@ -313,6 +313,20 @@
"method": "__register__", "method": "__register__",
"line": 92, "line": 92,
"operations": [ "operations": [
{
"object": "table_h",
"operation": "drop_column",
"tables": [
"ir_cron"
],
"line": 100,
"args": [
"column"
],
"kwargs": {},
"code": "table_h.drop_column(column)",
"phase": "after_super"
},
{ {
"object": "table_h", "object": "table_h",
"operation": "not_null_action", "operation": "not_null_action",
@@ -834,6 +848,39 @@
"phase": "after_super", "phase": "after_super",
"condition": "table.column_exist('minimum_delay')" "condition": "table.column_exist('minimum_delay')"
}, },
{
"object": "cursor",
"operation": "execute",
"tables": [
"ir_trigger"
],
"line": 91,
"args": [
"*sql_table.update([sql_table.minimum_time_delay], [delay], where=sql_table.id == id_)"
],
"kwargs": {},
"code": "(Transaction().connection.cursor()).execute(*sql_table.update(\n [sql_table.minimum_time_delay],\n [(datetime.timedelta(hours=delay))],\n where=sql_table.id == id_))",
"phase": "after_super",
"condition": "table.column_exist('minimum_delay')"
},
{
"object": "sql_table",
"operation": "update",
"tables": [
"ir_trigger"
],
"line": 91,
"args": [
"[sql_table.minimum_time_delay]",
"[delay]"
],
"kwargs": {
"where": "sql_table.id == id_"
},
"code": "sql_table.update(\n [sql_table.minimum_time_delay],\n [(datetime.timedelta(hours=delay))],\n where=sql_table.id == id_)",
"phase": "after_super",
"condition": "table.column_exist('minimum_delay')"
},
{ {
"object": "table", "object": "table",
"operation": "drop_column", "operation": "drop_column",
+61
View File
@@ -36,6 +36,67 @@
"code": "template_lot_type.select(\n template_lot_type.template,\n distinct_on=template_lot_type.template)", "code": "template_lot_type.select(\n template_lot_type.template,\n distinct_on=template_lot_type.template)",
"phase": "after_super", "phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)" "condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
},
{
"object": "cursor",
"operation": "execute",
"tables": [],
"line": 86,
"args": [
"*template_lot_type.join(lot_type, condition=template_lot_type.type == lot_type.id).select(lot_type.code, where=template_lot_type.template == template_id)"
],
"kwargs": {},
"code": "(connection.cursor()).execute(*template_lot_type\n .join(lot_type,\n condition=template_lot_type.type == lot_type.id)\n .select(\n lot_type.code,\n where=template_lot_type.template == template_id))",
"phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
},
{
"object": "template_lot_type.join(lot_type, condition=template_lot_type.type == lot_type.id)",
"operation": "select",
"tables": [],
"line": 86,
"args": [
"lot_type.code"
],
"kwargs": {
"where": "template_lot_type.template == template_id"
},
"code": "template_lot_type\n .join(lot_type,\n condition=template_lot_type.type == lot_type.id)\n .select(\n lot_type.code,\n where=template_lot_type.template == template_id)",
"phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
},
{
"object": "cursor",
"operation": "execute",
"tables": [
"product_template"
],
"line": 93,
"args": [
"*table.update([table.lot_required], [value], where=table.id == template_id)"
],
"kwargs": {},
"code": "(connection.cursor()).execute(*table.update(\n [table.lot_required], [(cls.lot_required.sql_format([t for t, in cursor]))],\n where=table.id == template_id))",
"phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
},
{
"object": "table",
"operation": "update",
"tables": [
"product_template"
],
"line": 93,
"args": [
"[table.lot_required]",
"[value]"
],
"kwargs": {
"where": "table.id == template_id"
},
"code": "table.update(\n [table.lot_required], [(cls.lot_required.sql_format([t for t, in cursor]))],\n where=table.id == template_id)",
"phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
} }
] ]
} }
+15
View File
@@ -9,6 +9,21 @@
"method": "__register__", "method": "__register__",
"line": 72, "line": 72,
"operations": [ "operations": [
{
"object": "table_h",
"operation": "not_null_action",
"tables": [
"currency_currency"
],
"line": 86,
"args": [
"col",
"'remove'"
],
"kwargs": {},
"code": "table_h.not_null_action(col, 'remove')",
"phase": "after_super"
},
{ {
"object": "cursor", "object": "cursor",
"operation": "execute", "operation": "execute",
+47
View File
@@ -313,6 +313,20 @@
"method": "__register__", "method": "__register__",
"line": 92, "line": 92,
"operations": [ "operations": [
{
"object": "table_h",
"operation": "drop_column",
"tables": [
"ir_cron"
],
"line": 100,
"args": [
"column"
],
"kwargs": {},
"code": "table_h.drop_column(column)",
"phase": "after_super"
},
{ {
"object": "table_h", "object": "table_h",
"operation": "not_null_action", "operation": "not_null_action",
@@ -834,6 +848,39 @@
"phase": "after_super", "phase": "after_super",
"condition": "table.column_exist('minimum_delay')" "condition": "table.column_exist('minimum_delay')"
}, },
{
"object": "cursor",
"operation": "execute",
"tables": [
"ir_trigger"
],
"line": 96,
"args": [
"*sql_table.update([sql_table.minimum_time_delay], [delay], where=sql_table.id == id_)"
],
"kwargs": {},
"code": "(Transaction().connection.cursor()).execute(*sql_table.update(\n [sql_table.minimum_time_delay],\n [(datetime.timedelta(hours=delay))],\n where=sql_table.id == id_))",
"phase": "after_super",
"condition": "table.column_exist('minimum_delay')"
},
{
"object": "sql_table",
"operation": "update",
"tables": [
"ir_trigger"
],
"line": 96,
"args": [
"[sql_table.minimum_time_delay]",
"[delay]"
],
"kwargs": {
"where": "sql_table.id == id_"
},
"code": "sql_table.update(\n [sql_table.minimum_time_delay],\n [(datetime.timedelta(hours=delay))],\n where=sql_table.id == id_)",
"phase": "after_super",
"condition": "table.column_exist('minimum_delay')"
},
{ {
"object": "table", "object": "table",
"operation": "drop_column", "operation": "drop_column",
+61
View File
@@ -36,6 +36,67 @@
"code": "template_lot_type.select(\n template_lot_type.template,\n distinct_on=template_lot_type.template)", "code": "template_lot_type.select(\n template_lot_type.template,\n distinct_on=template_lot_type.template)",
"phase": "after_super", "phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)" "condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
},
{
"object": "cursor",
"operation": "execute",
"tables": [],
"line": 89,
"args": [
"*template_lot_type.join(lot_type, condition=template_lot_type.type == lot_type.id).select(lot_type.code, where=template_lot_type.template == template_id)"
],
"kwargs": {},
"code": "(connection.cursor()).execute(*template_lot_type\n .join(lot_type,\n condition=template_lot_type.type == lot_type.id)\n .select(\n lot_type.code,\n where=template_lot_type.template == template_id))",
"phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
},
{
"object": "template_lot_type.join(lot_type, condition=template_lot_type.type == lot_type.id)",
"operation": "select",
"tables": [],
"line": 89,
"args": [
"lot_type.code"
],
"kwargs": {
"where": "template_lot_type.template == template_id"
},
"code": "template_lot_type\n .join(lot_type,\n condition=template_lot_type.type == lot_type.id)\n .select(\n lot_type.code,\n where=template_lot_type.template == template_id)",
"phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
},
{
"object": "cursor",
"operation": "execute",
"tables": [
"product_template"
],
"line": 96,
"args": [
"*table.update([table.lot_required], [value], where=table.id == template_id)"
],
"kwargs": {},
"code": "(connection.cursor()).execute(*table.update(\n [table.lot_required], [(cls.lot_required.sql_format([t for t, in cursor]))],\n where=table.id == template_id))",
"phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
},
{
"object": "table",
"operation": "update",
"tables": [
"product_template"
],
"line": 96,
"args": [
"[table.lot_required]",
"[value]"
],
"kwargs": {
"where": "table.id == template_id"
},
"code": "table.update(\n [table.lot_required], [(cls.lot_required.sql_format([t for t, in cursor]))],\n where=table.id == template_id)",
"phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
} }
] ]
} }
+14
View File
@@ -57,6 +57,20 @@
"method": "__register__", "method": "__register__",
"line": 92, "line": 92,
"operations": [ "operations": [
{
"object": "table_h",
"operation": "drop_column",
"tables": [
"ir_cron"
],
"line": 100,
"args": [
"column"
],
"kwargs": {},
"code": "table_h.drop_column(column)",
"phase": "after_super"
},
{ {
"object": "table_h", "object": "table_h",
"operation": "not_null_action", "operation": "not_null_action",
+31
View File
@@ -236,6 +236,37 @@
}, },
"code": "table.update([table.type], ['cn_ric'],\n where=(table.type == 'cn_rit'))", "code": "table.update([table.type], ['cn_ric'],\n where=(table.type == 'cn_rit'))",
"phase": "after_super" "phase": "after_super"
},
{
"object": "cursor",
"operation": "execute",
"tables": [
"party_identifier"
],
"line": 793,
"args": [
"*table.update([table.type], [new], where=table.type == old)"
],
"kwargs": {},
"code": "(Transaction().connection.cursor()).execute(*table.update(\n [table.type], [new],\n where=table.type == old))",
"phase": "after_super"
},
{
"object": "table",
"operation": "update",
"tables": [
"party_identifier"
],
"line": 793,
"args": [
"[table.type]",
"[new]"
],
"kwargs": {
"where": "table.type == old"
},
"code": "table.update(\n [table.type], [new],\n where=table.type == old)",
"phase": "after_super"
} }
] ]
} }
+61
View File
@@ -36,6 +36,67 @@
"code": "template_lot_type.select(\n template_lot_type.template,\n distinct_on=template_lot_type.template)", "code": "template_lot_type.select(\n template_lot_type.template,\n distinct_on=template_lot_type.template)",
"phase": "after_super", "phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)" "condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
},
{
"object": "cursor",
"operation": "execute",
"tables": [],
"line": 89,
"args": [
"*template_lot_type.join(lot_type, condition=template_lot_type.type == lot_type.id).select(lot_type.code, where=template_lot_type.template == template_id)"
],
"kwargs": {},
"code": "(connection.cursor()).execute(*template_lot_type\n .join(lot_type,\n condition=template_lot_type.type == lot_type.id)\n .select(\n lot_type.code,\n where=template_lot_type.template == template_id))",
"phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
},
{
"object": "template_lot_type.join(lot_type, condition=template_lot_type.type == lot_type.id)",
"operation": "select",
"tables": [],
"line": 89,
"args": [
"lot_type.code"
],
"kwargs": {
"where": "template_lot_type.template == template_id"
},
"code": "template_lot_type\n .join(lot_type,\n condition=template_lot_type.type == lot_type.id)\n .select(\n lot_type.code,\n where=template_lot_type.template == template_id)",
"phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
},
{
"object": "cursor",
"operation": "execute",
"tables": [
"product_template"
],
"line": 96,
"args": [
"*table.update([table.lot_required], [value], where=table.id == template_id)"
],
"kwargs": {},
"code": "(connection.cursor()).execute(*table.update(\n [table.lot_required], [(cls.lot_required.sql_format([t for t, in cursor]))],\n where=table.id == template_id))",
"phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
},
{
"object": "table",
"operation": "update",
"tables": [
"product_template"
],
"line": 96,
"args": [
"[table.lot_required]",
"[value]"
],
"kwargs": {
"where": "table.id == template_id"
},
"code": "table.update(\n [table.lot_required], [(cls.lot_required.sql_format([t for t, in cursor]))],\n where=table.id == template_id)",
"phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
} }
] ]
} }
+14
View File
@@ -57,6 +57,20 @@
"method": "__register__", "method": "__register__",
"line": 92, "line": 92,
"operations": [ "operations": [
{
"object": "table_h",
"operation": "drop_column",
"tables": [
"ir_cron"
],
"line": 100,
"args": [
"column"
],
"kwargs": {},
"code": "table_h.drop_column(column)",
"phase": "after_super"
},
{ {
"object": "table_h", "object": "table_h",
"operation": "not_null_action", "operation": "not_null_action",
+31
View File
@@ -261,6 +261,37 @@
}, },
"code": "table.update([table.type], ['cn_ric'],\n where=(table.type == 'cn_rit'))", "code": "table.update([table.type], ['cn_ric'],\n where=(table.type == 'cn_rit'))",
"phase": "after_super" "phase": "after_super"
},
{
"object": "cursor",
"operation": "execute",
"tables": [
"party_identifier"
],
"line": 818,
"args": [
"*table.update([table.type], [new], where=table.type == old)"
],
"kwargs": {},
"code": "(Transaction().connection.cursor()).execute(*table.update(\n [table.type], [new],\n where=table.type == old))",
"phase": "after_super"
},
{
"object": "table",
"operation": "update",
"tables": [
"party_identifier"
],
"line": 818,
"args": [
"[table.type]",
"[new]"
],
"kwargs": {
"where": "table.type == old"
},
"code": "table.update(\n [table.type], [new],\n where=table.type == old)",
"phase": "after_super"
} }
] ]
} }
+61
View File
@@ -36,6 +36,67 @@
"code": "template_lot_type.select(\n template_lot_type.template,\n distinct_on=template_lot_type.template)", "code": "template_lot_type.select(\n template_lot_type.template,\n distinct_on=template_lot_type.template)",
"phase": "after_super", "phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)" "condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
},
{
"object": "cursor",
"operation": "execute",
"tables": [],
"line": 89,
"args": [
"*template_lot_type.join(lot_type, condition=template_lot_type.type == lot_type.id).select(lot_type.code, where=template_lot_type.template == template_id)"
],
"kwargs": {},
"code": "(connection.cursor()).execute(*template_lot_type\n .join(lot_type,\n condition=template_lot_type.type == lot_type.id)\n .select(\n lot_type.code,\n where=template_lot_type.template == template_id))",
"phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
},
{
"object": "template_lot_type.join(lot_type, condition=template_lot_type.type == lot_type.id)",
"operation": "select",
"tables": [],
"line": 89,
"args": [
"lot_type.code"
],
"kwargs": {
"where": "template_lot_type.template == template_id"
},
"code": "template_lot_type\n .join(lot_type,\n condition=template_lot_type.type == lot_type.id)\n .select(\n lot_type.code,\n where=template_lot_type.template == template_id)",
"phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
},
{
"object": "cursor",
"operation": "execute",
"tables": [
"product_template"
],
"line": 96,
"args": [
"*table.update([table.lot_required], [value], where=table.id == template_id)"
],
"kwargs": {},
"code": "(connection.cursor()).execute(*table.update(\n [table.lot_required], [(cls.lot_required.sql_format([t for t, in cursor]))],\n where=table.id == template_id))",
"phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
},
{
"object": "table",
"operation": "update",
"tables": [
"product_template"
],
"line": 96,
"args": [
"[table.lot_required]",
"[value]"
],
"kwargs": {
"where": "table.id == template_id"
},
"code": "table.update(\n [table.lot_required], [(cls.lot_required.sql_format([t for t, in cursor]))],\n where=table.id == template_id)",
"phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
} }
] ]
} }
+14
View File
@@ -57,6 +57,20 @@
"method": "__register__", "method": "__register__",
"line": 119, "line": 119,
"operations": [ "operations": [
{
"object": "table_h",
"operation": "drop_column",
"tables": [
"ir_cron"
],
"line": 127,
"args": [
"column"
],
"kwargs": {},
"code": "table_h.drop_column(column)",
"phase": "after_super"
},
{ {
"object": "table_h", "object": "table_h",
"operation": "not_null_action", "operation": "not_null_action",
+31
View File
@@ -262,6 +262,37 @@
"code": "table.update([table.type], ['cn_ric'],\n where=(table.type == 'cn_rit'))", "code": "table.update([table.type], ['cn_ric'],\n where=(table.type == 'cn_rit'))",
"phase": "after_super" "phase": "after_super"
}, },
{
"object": "cursor",
"operation": "execute",
"tables": [
"party_identifier"
],
"line": 836,
"args": [
"*table.update([table.type], [new], where=table.type == old)"
],
"kwargs": {},
"code": "(Transaction().connection.cursor()).execute(*table.update(\n [table.type], [new],\n where=table.type == old))",
"phase": "after_super"
},
{
"object": "table",
"operation": "update",
"tables": [
"party_identifier"
],
"line": 836,
"args": [
"[table.type]",
"[new]"
],
"kwargs": {
"where": "table.type == old"
},
"code": "table.update(\n [table.type], [new],\n where=table.type == old)",
"phase": "after_super"
},
{ {
"object": "cursor", "object": "cursor",
"operation": "execute", "operation": "execute",
+61
View File
@@ -36,6 +36,67 @@
"code": "template_lot_type.select(\n template_lot_type.template,\n distinct_on=template_lot_type.template)", "code": "template_lot_type.select(\n template_lot_type.template,\n distinct_on=template_lot_type.template)",
"phase": "after_super", "phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)" "condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
},
{
"object": "cursor",
"operation": "execute",
"tables": [],
"line": 89,
"args": [
"*template_lot_type.join(lot_type, condition=template_lot_type.type == lot_type.id).select(lot_type.code, where=template_lot_type.template == template_id)"
],
"kwargs": {},
"code": "(connection.cursor()).execute(*template_lot_type\n .join(lot_type,\n condition=template_lot_type.type == lot_type.id)\n .select(\n lot_type.code,\n where=template_lot_type.template == template_id))",
"phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
},
{
"object": "template_lot_type.join(lot_type, condition=template_lot_type.type == lot_type.id)",
"operation": "select",
"tables": [],
"line": 89,
"args": [
"lot_type.code"
],
"kwargs": {
"where": "template_lot_type.template == template_id"
},
"code": "template_lot_type\n .join(lot_type,\n condition=template_lot_type.type == lot_type.id)\n .select(\n lot_type.code,\n where=template_lot_type.template == template_id)",
"phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
},
{
"object": "cursor",
"operation": "execute",
"tables": [
"product_template"
],
"line": 96,
"args": [
"*table.update([table.lot_required], [value], where=table.id == template_id)"
],
"kwargs": {},
"code": "(connection.cursor()).execute(*table.update(\n [table.lot_required], [(cls.lot_required.sql_format([t for t, in cursor]))],\n where=table.id == template_id))",
"phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
},
{
"object": "table",
"operation": "update",
"tables": [
"product_template"
],
"line": 96,
"args": [
"[table.lot_required]",
"[value]"
],
"kwargs": {
"where": "table.id == template_id"
},
"code": "table.update(\n [table.lot_required], [(cls.lot_required.sql_format([t for t, in cursor]))],\n where=table.id == template_id)",
"phase": "after_super",
"condition": "table_h.table_exist(template_lot_type_table_name) and table_h.table_exist(lot_type_table_name)"
} }
] ]
} }
+24
View File
@@ -615,6 +615,30 @@
} }
] ]
}, },
{
"module": "ir",
"file": "trigger.py",
"class": "Trigger",
"method": "__register__",
"line": 93,
"operations": [
{
"object": "table_h",
"operation": "column_rename",
"tables": [
"ir_trigger"
],
"line": 98,
"args": [
"name",
"name + '_'"
],
"kwargs": {},
"code": "table_h.column_rename(name, name + '_')",
"phase": "before_super"
}
]
},
{ {
"module": "ir", "module": "ir",
"file": "ui/view.py", "file": "ui/view.py",
+31
View File
@@ -113,6 +113,37 @@
"method": "__register__", "method": "__register__",
"line": 825, "line": 825,
"operations": [ "operations": [
{
"object": "cursor",
"operation": "execute",
"tables": [
"party_identifier"
],
"line": 834,
"args": [
"*table.update([table.type], [new], where=table.type == old)"
],
"kwargs": {},
"code": "(Transaction().connection.cursor()).execute(*table.update(\n [table.type], [new],\n where=table.type == old))",
"phase": "after_super"
},
{
"object": "table",
"operation": "update",
"tables": [
"party_identifier"
],
"line": 834,
"args": [
"[table.type]",
"[new]"
],
"kwargs": {
"where": "table.type == old"
},
"code": "table.update(\n [table.type], [new],\n where=table.type == old)",
"phase": "after_super"
},
{ {
"object": "cursor", "object": "cursor",
"operation": "execute", "operation": "execute",
+24
View File
@@ -615,6 +615,30 @@
} }
] ]
}, },
{
"module": "ir",
"file": "trigger.py",
"class": "Trigger",
"method": "__register__",
"line": 93,
"operations": [
{
"object": "table_h",
"operation": "column_rename",
"tables": [
"ir_trigger"
],
"line": 98,
"args": [
"name",
"name + '_'"
],
"kwargs": {},
"code": "table_h.column_rename(name, name + '_')",
"phase": "before_super"
}
]
},
{ {
"module": "ir", "module": "ir",
"file": "ui/view.py", "file": "ui/view.py",
+31
View File
@@ -113,6 +113,37 @@
"method": "__register__", "method": "__register__",
"line": 844, "line": 844,
"operations": [ "operations": [
{
"object": "cursor",
"operation": "execute",
"tables": [
"party_identifier"
],
"line": 853,
"args": [
"*table.update([table.type], [new], where=table.type == old)"
],
"kwargs": {},
"code": "(Transaction().connection.cursor()).execute(*table.update(\n [table.type], [new],\n where=table.type == old))",
"phase": "after_super"
},
{
"object": "table",
"operation": "update",
"tables": [
"party_identifier"
],
"line": 853,
"args": [
"[table.type]",
"[new]"
],
"kwargs": {
"where": "table.type == old"
},
"code": "table.update(\n [table.type], [new],\n where=table.type == old)",
"phase": "after_super"
},
{ {
"object": "cursor", "object": "cursor",
"operation": "execute", "operation": "execute",
+24
View File
@@ -615,6 +615,30 @@
} }
] ]
}, },
{
"module": "ir",
"file": "trigger.py",
"class": "Trigger",
"method": "__register__",
"line": 92,
"operations": [
{
"object": "table_h",
"operation": "column_rename",
"tables": [
"ir_trigger"
],
"line": 97,
"args": [
"name",
"name + '_'"
],
"kwargs": {},
"code": "table_h.column_rename(name, name + '_')",
"phase": "before_super"
}
]
},
{ {
"module": "ir", "module": "ir",
"file": "ui/view.py", "file": "ui/view.py",
+31
View File
@@ -113,6 +113,37 @@
"method": "__register__", "method": "__register__",
"line": 859, "line": 859,
"operations": [ "operations": [
{
"object": "cursor",
"operation": "execute",
"tables": [
"party_identifier"
],
"line": 873,
"args": [
"*table.update([table.type], [new], where=table.type == old)"
],
"kwargs": {},
"code": "(Transaction().connection.cursor()).execute(*table.update(\n [table.type], [new],\n where=table.type == old))",
"phase": "after_super"
},
{
"object": "table",
"operation": "update",
"tables": [
"party_identifier"
],
"line": 873,
"args": [
"[table.type]",
"[new]"
],
"kwargs": {
"where": "table.type == old"
},
"code": "table.update(\n [table.type], [new],\n where=table.type == old)",
"phase": "after_super"
},
{ {
"object": "cursor", "object": "cursor",
"operation": "execute", "operation": "execute",
+114 -3
View File
@@ -109,6 +109,15 @@ class RegisterExtractor(ast.NodeVisitor):
# Klasse, in der wir uns gerade befinden (für cls._table etc.) # Klasse, in der wir uns gerade befinden (für cls._table etc.)
self.current_class = None self.current_class = None
# Name -> FunctionDef aller Methoden der aktuellen Klasse, um
# Helper-Aufrufe aus __register__ heraus aufzulösen.
self.class_methods = {}
# Aufruf-Kette der Helper-Methoden, in die wir gerade rekursiv
# abgestiegen sind (für Zyklenschutz und die "via"-Provenienz
# der gefundenen Operationen).
self.call_chain = []
# -- Modul-/Klassenebene ------------------------------------------------ # -- Modul-/Klassenebene ------------------------------------------------
def visit_Module(self, node): def visit_Module(self, node):
@@ -124,9 +133,18 @@ class RegisterExtractor(ast.NodeVisitor):
self.generic_visit(node) self.generic_visit(node)
def visit_ClassDef(self, node): def visit_ClassDef(self, node):
# Alle Methoden der Klasse vormerken, damit __register__-Aufrufe an
# eigene Helper-Methoden (z. B. `cls._migrate_x(module_name)`)
# aufgelöst werden können.
methods = {
item.name: item
for item in node.body
if isinstance(item, (ast.FunctionDef, ast.AsyncFunctionDef))
}
for item in node.body: for item in node.body:
if isinstance(item, ast.FunctionDef) and item.name == "__register__": if isinstance(item, ast.FunctionDef) and item.name == "__register__":
self.extract_register(node.name, item) self.extract_register(node.name, item, methods)
self.generic_visit(node) self.generic_visit(node)
@@ -147,13 +165,18 @@ class RegisterExtractor(ast.NodeVisitor):
# -- __register__ selbst ------------------------------------------------- # -- __register__ selbst -------------------------------------------------
def extract_register(self, cls, func): def extract_register(self, cls, func, methods):
"""Analysiert eine einzelne __register__-Methode.""" """Analysiert eine einzelne __register__-Methode."""
operations = [] operations = []
self.table_vars = {} self.table_vars = {}
self.alias_vars = {} self.alias_vars = {}
self.current_class = cls self.current_class = cls
# Für die Auflösung von Helper-Aufrufen (cls._migrate_x(...)) und
# als Zyklenschutz während der Rekursion in solche Helper.
self.class_methods = methods
self.call_chain = []
model_name = self.model_names.get(cls) model_name = self.model_names.get(cls)
if model_name: if model_name:
self.table_vars["cls"] = model_name self.table_vars["cls"] = model_name
@@ -338,6 +361,13 @@ class RegisterExtractor(ast.NodeVisitor):
`phase` wechselt von "before_super" auf "after_super", sobald der `phase` wechselt von "before_super" auf "after_super", sobald der
super().__register__(...)-Aufruf gefunden wird. `condition` trägt super().__register__(...)-Aufruf gefunden wird. `condition` trägt
den Text einer umschließenden if-Bedingung mit, falls vorhanden. den Text einer umschließenden if-Bedingung mit, falls vorhanden.
Steigt dabei in ALLE geschachtelten Blöcke ab (if/for/while/with/
try/except/finally), nicht nur in if. Aufrufe innerhalb einer
for-Schleife, eines with-Blocks oder eines try/except wurden vorher
stillschweigend übersprungen, weil nur ast.If speziell behandelt
wurde und alle anderen Compound-Statements kein `.value`-Attribut
besitzen.
""" """
for stmt in statements: for stmt in statements:
@@ -351,10 +381,38 @@ class RegisterExtractor(ast.NodeVisitor):
self.walk_statements(stmt.orelse, operations, phase, condition) self.walk_statements(stmt.orelse, operations, phase, condition)
continue continue
for body in self._nested_bodies(stmt):
self.walk_statements(body, operations, phase, condition)
value = getattr(stmt, "value", None) value = getattr(stmt, "value", None)
if value is not None: if value is not None:
self.walk_expression(value, operations, phase, condition) self.walk_expression(value, operations, phase, condition)
@staticmethod
def _nested_bodies(stmt):
"""
Liefert alle Statement-Listen, die direkt in `stmt` geschachtelt
sind (außer bei ast.If, das walk_statements separat behandelt,
weil dort zusätzlich die Bedingung mitgeführt wird).
"""
bodies = []
if isinstance(stmt, (ast.For, ast.AsyncFor, ast.While)):
bodies.append(stmt.body)
bodies.append(stmt.orelse)
elif isinstance(stmt, (ast.With, ast.AsyncWith)):
bodies.append(stmt.body)
elif isinstance(stmt, ast.Try) or (
hasattr(ast, "TryStar") and isinstance(stmt, ast.TryStar)
):
bodies.append(stmt.body)
for handler in stmt.handlers:
bodies.append(handler.body)
bodies.append(stmt.orelse)
bodies.append(stmt.finalbody)
return bodies
def walk_expression(self, node, operations, phase, condition): def walk_expression(self, node, operations, phase, condition):
if node is None: if node is None:
return return
@@ -365,11 +423,64 @@ class RegisterExtractor(ast.NodeVisitor):
op["phase"] = phase op["phase"] = phase
if condition: if condition:
op["condition"] = condition op["condition"] = condition
if self.call_chain:
op["via"] = [dict(entry) for entry in self.call_chain]
operations.append(op) operations.append(op)
else:
helper = self.resolve_helper_call(node)
if helper:
method_name, func_node = helper
self.walk_into_helper(
method_name, func_node, node.lineno, operations, phase, condition
)
for child in ast.iter_child_nodes(node): for child in ast.iter_child_nodes(node):
self.walk_expression(child, operations, phase, condition) self.walk_expression(child, operations, phase, condition)
def resolve_helper_call(self, node):
"""
Erkennt Aufrufe der Form `cls.<method>(...)` / `self.<method>(...)`
an eine Methode, die in derselben Klasse definiert ist (z. B. eine
ausgelagerte Migrationsmethode). Cross-Klassen-/Cross-Datei-Aufrufe
werden bewusst nicht aufgelöst.
"""
if not isinstance(node.func, ast.Attribute):
return None
receiver = node.func.value
if not (isinstance(receiver, ast.Name) and receiver.id in ("cls", "self")):
return None
method_name = node.func.attr
if method_name == "__register__":
return None
func_node = self.class_methods.get(method_name)
if func_node is None:
return None
return method_name, func_node
def walk_into_helper(self, method_name, func_node, call_line, operations, phase, condition):
"""
Steigt in eine Helper-Methode ab, als wäre ihr Körper an der
Aufrufstelle inline eingefügt. Mit Zyklenschutz gegen (indirekt)
rekursive Helper-Aufrufe.
"""
if any(entry["method"] == method_name for entry in self.call_chain):
return
self.call_chain.append({"method": method_name, "line": call_line})
# Tabellen-Variablen, die lokal in der Helper-Methode definiert
# werden (z. B. `table = cls.__table__()`), vorab einsammeln.
for stmt in func_node.body:
self.collect_table_assignment(stmt)
self.walk_statements(func_node.body, operations, phase, condition)
self.call_chain.pop()
def is_super_register(self, stmt): def is_super_register(self, stmt):
"""True für `super(...).__register__(...)` als eigenständiges Statement.""" """True für `super(...).__register__(...)` als eigenständiges Statement."""
if not isinstance(stmt, ast.Expr): if not isinstance(stmt, ast.Expr):
@@ -619,4 +730,4 @@ def main():
if __name__ == "__main__": if __name__ == "__main__":
main() main()