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
5 changes: 5 additions & 0 deletions connector_extension/common/tools.py
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,11 @@ def slugify(value):


def trim_domain(domain):
"""
Takes an Odoo-style domain (a Python list of clauses) and returns a new domain where
any string values in the third position of 3‑element clauses have leading/trailing
whitespace removed.
"""
trimmed_domain = []
for d in domain:
if isinstance(d, (list, tuple)):
Expand Down
30 changes: 12 additions & 18 deletions connector_extension/components/binder.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@

import psycopg2

import odoo
from odoo import _, fields, models
from odoo.exceptions import ValidationError
from odoo.osv import expression
Expand Down Expand Up @@ -275,6 +274,16 @@ def bind_import(self, external_data, values, sync_date, for_create=False):
}
)

def _prepare_binding_export_values(self, relation_id, external_data):
external_id = self.dict2id(external_data, in_field=False)
return {
self._backend_field: self.backend_record.id,
self._odoo_field: relation_id,
self._sync_date_field: fields.Datetime.now(),
**self.id2dict(external_id, in_field=True),
**self._additional_external_binding_fields(external_data),
}

def bind_export(self, external_data, relation):
"""Create the link between an external ID and an Odoo ID

Expand All @@ -295,24 +304,9 @@ def bind_export(self, external_data, relation):
else:
relation_id = relation

external_id = self.dict2id(external_data, in_field=False)
with self._retry_unique_violation():
binding = self.model.with_context(connector_no_export=True).create(
{
self._backend_field: self.backend_record.id,
self._odoo_field: relation_id,
self._sync_date_field: fields.Datetime.now(),
**self.id2dict(external_id, in_field=True),
**self._additional_external_binding_fields(external_data),
}
)
# Eager commit to avoid having 2 jobs
# exporting at the same time. The constraint
# will pop if an other job already created
# the same binding. It will be caught and
# raise a RetryableJobError.
if not odoo.tools.config["test_enable"]:
self.env.cr.commit() # pylint: disable=E8102
values = self._prepare_binding_export_values(relation_id, external_data)
binding = self.model.with_context(connector_no_export=True).create(values)
return binding

def _additional_external_binding_fields(self, external_data):
Expand Down
Loading