Skip to content

Commit f9d2d0a

Browse files
committed
[FIX] server: handle move of transient_model path
1 parent e194b0e commit f9d2d0a

File tree

1 file changed

+23
-8
lines changed

1 file changed

+23
-8
lines changed

server/src/core/python_odoo_builder.rs

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -304,15 +304,27 @@ impl PythonOdooBuilder {
304304
let symbol = &self.symbol.clone();
305305
let odoo_symbol_tree = symbol.borrow().get_main_entry_tree(session);
306306
let mut sym = symbol.borrow_mut();
307-
if compare_semver(session.sync_odoo.full_version.as_str(), "18.1") == Ordering::Less && odoo_symbol_tree.0.len() == 2 && odoo_symbol_tree.1.len() == 1 && odoo_symbol_tree.0[0] == "odoo" && odoo_symbol_tree.0[1] == "models" &&
308-
(odoo_symbol_tree.1[0] == "BaseModel" || odoo_symbol_tree.1[0] == "Model" || odoo_symbol_tree.1[0] == "TransientModel") {
309-
//we don't want to compare these classes with themselves (<18.1)
307+
if (
308+
compare_semver(session.sync_odoo.full_version.as_str(), "18.1") == Ordering::Less && odoo_symbol_tree.0.len() == 2
309+
&& odoo_symbol_tree.1.len() == 1
310+
&& odoo_symbol_tree.0[0] == "odoo"
311+
&& odoo_symbol_tree.0[1] == "models"
312+
&& (odoo_symbol_tree.1[0] == "BaseModel" || odoo_symbol_tree.1[0] == "Model" || odoo_symbol_tree.1[0] == "TransientModel"))
313+
|| (compare_semver(session.sync_odoo.full_version.as_str(), "18.1") >= Ordering::Equal && odoo_symbol_tree.0.len() == 3
314+
&& odoo_symbol_tree.1.len() == 1
315+
&& odoo_symbol_tree.0[0] == "odoo"
316+
&& odoo_symbol_tree.0[1] == "orm"
317+
&& odoo_symbol_tree.0[2] == "models"
318+
&& (odoo_symbol_tree.1[0] == "BaseModel" || odoo_symbol_tree.1[0] == "Model" || odoo_symbol_tree.1[0] == "TransientModel"))
319+
|| (compare_semver(session.sync_odoo.full_version.as_str(), "18.3") >= Ordering::Equal && odoo_symbol_tree.0.len() == 3
320+
&& odoo_symbol_tree.1.len() == 1
321+
&& odoo_symbol_tree.0[0] == "odoo"
322+
&& odoo_symbol_tree.0[1] == "orm"
323+
&& odoo_symbol_tree.0[2] == "models_transient"
324+
&& odoo_symbol_tree.1[0] == "TransientModel") {
325+
//we don't want to compare these classes with themselves (> 18.3)
310326
return false;
311-
} else if compare_semver(session.sync_odoo.full_version.as_str(), "18.1") >= Ordering::Equal && odoo_symbol_tree.0.len() == 3 && odoo_symbol_tree.1.len() == 1 && odoo_symbol_tree.0[0] == "odoo" && odoo_symbol_tree.0[1] == "orm" && odoo_symbol_tree.0[2] == "models" &&
312-
(odoo_symbol_tree.1[0] == "BaseModel" || odoo_symbol_tree.1[0] == "Model" || odoo_symbol_tree.1[0] == "TransientModel") {
313-
//we don't want to compare these classes with themselves (> 18.1)
314-
return false;
315-
}else {
327+
} else {
316328
if sym.as_class_sym().bases.is_empty() {
317329
return false;
318330
}
@@ -324,6 +336,9 @@ impl PythonOdooBuilder {
324336
model_tree = (vec![Sy!("odoo"), Sy!("orm"), Sy!("models")], vec![Sy!("Model")]);
325337
transient_tree = (vec![Sy!("odoo"), Sy!("orm"), Sy!("models")], vec![Sy!("TransientModel")]);
326338
}
339+
if compare_semver(session.sync_odoo.full_version.as_str(), "18.3") >= Ordering::Equal {
340+
transient_tree = (vec![Sy!("odoo"), Sy!("orm"), Sy!("models_transient")], vec![Sy!("TransientModel")]);
341+
}
327342
let base_model = session.sync_odoo.get_symbol(session.sync_odoo.config.odoo_path.as_ref().unwrap(), &base_model_tree, u32::MAX);
328343
let model = session.sync_odoo.get_symbol(session.sync_odoo.config.odoo_path.as_ref().unwrap(), &model_tree, u32::MAX);
329344
let transient = session.sync_odoo.get_symbol(session.sync_odoo.config.odoo_path.as_ref().unwrap(), &transient_tree, u32::MAX);

0 commit comments

Comments
 (0)