diff --git a/odoo_scripts/import_jsonrpc.py b/odoo_scripts/import_jsonrpc.py index e1b1329e6de1effe23513aa744bfd4f0fc6026ff_b2Rvb19zY3JpcHRzL2ltcG9ydF9qc29ucnBjLnB5..fd1b9ce6d3e8dcb7bc0f98d14bb7b60998554e9d_b2Rvb19zY3JpcHRzL2ltcG9ydF9qc29ucnBjLnB5 100644 --- a/odoo_scripts/import_jsonrpc.py +++ b/odoo_scripts/import_jsonrpc.py @@ -50,7 +50,7 @@ ) return xmlid_cache[xmlid] - def _get_ttype(model: str, field_name: str) -> str: + def _get_imf(model: str, field_name: str): imf_ids = imf.search( [("model", "=", model), ("name", "=", field_name)] ) @@ -54,8 +54,8 @@ imf_ids = imf.search( [("model", "=", model), ("name", "=", field_name)] ) - return imf.browse(imf_ids)[0].ttype + return imf.browse(imf_ids)[0] def _convert_identity(value): return value @@ -58,7 +58,10 @@ def _convert_identity(value): return value + def _convert_identity_nullable(value): + return value if value else None + def _convert_bool(value) -> bool: return value in (1, "1", "True", "true", True) @@ -68,7 +71,7 @@ def _convert_float(value) -> float: return float(value) - def _convert_many2one(xmlid: str) -> int: + def _convert_many2one(xmlid: str) -> Union[None, int]: if xmlid: return _ref(xmlid) return None @@ -106,8 +109,9 @@ ): odoo_field_name = column_name[:-3] if odoo_field_name != "id": - ttype = _get_ttype(model, odoo_field_name) - _logger.debug( + field = _get_imf(model, odoo_field_name) + ttype = field.ttype + _logger.info( "%s.%s type is %s", model, odoo_field_name, @@ -121,7 +125,10 @@ "selection", "date", ): - converter = _convert_identity + if field.required: + converter = _convert_identity + else: + converter = _convert_identity_nullable elif ttype in ("many2one",): converter = _convert_many2one elif ttype in ("many2many",):