Skip to content

[18.0] Migrate sync and partner_telegram#497

Open
lieblinger wants to merge 9 commits intoitpp-labs:17.0from
lieblinger:18.0
Open

[18.0] Migrate sync and partner_telegram#497
lieblinger wants to merge 9 commits intoitpp-labs:17.0from
lieblinger:18.0

Conversation

@lieblinger
Copy link

No description provided.

Add missing opcodes that were present in Odoo core but not in the
sync_addons fork of safe_eval.py:

- _CONST_OPCODES: RETURN_CONST (3.12), TO_BOOL (3.13)
- _EXPR_OPCODES: BINARY_SLICE (3.11)
- _SAFE_OPCODES: END_FOR, LOAD_FAST_AND_CLEAR, LOAD_FAST_CHECK,
  POP_JUMP_IF_NOT_NONE, POP_JUMP_IF_NONE, CALL_INTRINSIC_1,
  STORE_SLICE (3.12), CALL_KW, LOAD_FAST_LOAD_FAST,
  STORE_FAST_STORE_FAST, STORE_FAST_LOAD_FAST, CONVERT_VALUE,
  FORMAT_SIMPLE, FORMAT_WITH_SPEC, SET_FUNCTION_ATTRIBUTE (3.13)

Also fix _UNSAFE_ATTRIBUTES: "g_yieldfrom" was missing the 'i' and
trailing comma, causing silent string concatenation with "cr_await".
Odoo 18's _compute_trigger depends on model_id and resets trigger to
False. After creating/updating a sync.trigger.automation record, the
trigger value from the task YAML header must be re-applied explicitly.
The previous fix checked record.trigger in the compute method, but the
ORM invalidates the field cache before calling compute. In multi-worker
production environments, cache invalidation signals between workers
trigger recomputation where record.trigger returns False (the default)
instead of the stored DB value, causing a NOT NULL constraint violation.

Read directly from the database to preserve existing trigger values.
No longer needed — the _compute_trigger override now reads directly
from the database, so the trigger value is preserved correctly during
recomputation.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant