Skip to content

Commit 3ee0af2

Browse files
committed
[FIX] orm files should not be able to depend on Model changes
1 parent 04d36f3 commit 3ee0af2

File tree

1 file changed

+15
-7
lines changed

1 file changed

+15
-7
lines changed

server/src/core/python_arch_eval_hooks.rs

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -754,23 +754,31 @@ impl PythonArchEvalHooks {
754754
let Some(ContextValue::STRING(s)) = context.get(&S!("args")) else {
755755
return res
756756
};
757-
let maybe_model = session.sync_odoo.models.get(&oyarn!("{}", s));
757+
let maybe_model = session.sync_odoo.models.get(&oyarn!("{}", s)).cloned();
758758
let has_class_in_parents = scope.as_ref().map(|scope| scope.borrow().get_in_parents(&vec![SymType::CLASS], true).is_some()).unwrap_or(false);
759-
if maybe_model.map(|m| m.borrow_mut().has_symbols()).unwrap_or(false) {
759+
if maybe_model.as_ref().map(|m| m.borrow_mut().has_symbols()).unwrap_or(false) {
760760
let Some(model) = maybe_model else {unreachable!()};
761761
let module = context.get(&S!("module"));
762762
let from_module = if let Some(ContextValue::MODULE(m)) = module {
763763
m.upgrade().clone()
764764
} else {
765765
None
766766
};
767-
if let Some(scope) = scope
767+
if let Some(scope_file) = scope
768768
.and_then(|s| s.borrow().get_file())
769769
.and_then(|w| w.upgrade()) {
770-
let env_files = session.sync_odoo.get_symbol(session.sync_odoo.config.odoo_path.as_ref().unwrap(), &(vec![Sy!("odoo"), Sy!("api")], vec![]), u32::MAX);
771-
let env_file = env_files.last().unwrap();
772-
if !Rc::ptr_eq(env_file, &scope) {
773-
scope.borrow_mut().add_model_dependencies(model);
770+
//exclude orm files
771+
if compare_semver(session.sync_odoo.full_version.as_str(), "18.1") < Ordering::Equal {
772+
let env_files = session.sync_odoo.get_symbol(session.sync_odoo.config.odoo_path.as_ref().unwrap(), &(vec![Sy!("odoo"), Sy!("api")], vec![]), u32::MAX);
773+
let env_file = env_files.last().unwrap();
774+
if !Rc::ptr_eq(env_file, &scope_file) {
775+
scope_file.borrow_mut().add_model_dependencies(&model);
776+
}
777+
} else {
778+
let tree = scope_file.borrow().get_main_entry_tree(session);
779+
if !tree.0.starts_with(&[Sy!("odoo"), Sy!("orm")]) {
780+
scope_file.borrow_mut().add_model_dependencies(&model);
781+
}
774782
}
775783
}
776784
let model = model.clone();

0 commit comments

Comments
 (0)