@@ -851,27 +851,39 @@ impl PythonArchEvalHooks {
851
851
}
852
852
853
853
fn _update_get_eval ( odoo : & mut SyncOdoo , entry_point : & Rc < RefCell < EntryPoint > > , symbol : Rc < RefCell < Symbol > > , tree : Tree ) {
854
- let get_sym = symbol. borrow ( ) . get_symbol ( & ( vec ! [ ] , vec ! [ Sy !( "__get__" ) ] ) , u32:: MAX ) ;
855
- if get_sym. is_empty ( ) {
854
+ let get_syms = symbol. borrow ( ) . get_symbol ( & ( vec ! [ ] , vec ! [ Sy !( "__get__" ) ] ) , u32:: MAX ) ;
855
+ let Some ( get_sym) = get_syms . last ( ) else {
856
856
return ;
857
- }
858
- let return_sym = odoo. get_symbol ( odoo. config . odoo_path . as_ref ( ) . unwrap ( ) , & tree, u32:: MAX ) ;
859
- if return_sym. is_empty ( ) {
857
+ } ;
858
+ let return_syms = odoo. get_symbol ( odoo. config . odoo_path . as_ref ( ) . unwrap ( ) , & tree, u32:: MAX ) ;
859
+ let Some ( return_sym) = return_syms . last ( ) else {
860
860
let file = symbol. borrow ( ) . get_file ( ) . clone ( ) ;
861
861
file. as_ref ( ) . unwrap ( ) . upgrade ( ) . unwrap ( ) . borrow_mut ( ) . not_found_paths_mut ( ) . push ( ( BuildSteps :: ARCH_EVAL , flatten_tree ( & tree) ) ) ;
862
862
entry_point. borrow_mut ( ) . not_found_symbols . insert ( symbol) ;
863
863
return ;
864
- }
865
- get_sym. last ( ) . unwrap ( ) . borrow_mut ( ) . set_evaluations ( vec ! [ Evaluation {
864
+ } ;
865
+ get_sym. borrow_mut ( ) . set_evaluations ( vec ! [ Evaluation {
866
866
symbol: EvaluationSymbol :: new_with_symbol(
867
- Rc :: downgrade( return_sym. last ( ) . unwrap ( ) ) ,
867
+ Rc :: downgrade( return_sym) ,
868
868
Some ( true ) ,
869
869
HashMap :: new( ) ,
870
870
Some ( PythonArchEvalHooks :: eval_get)
871
871
) ,
872
872
value: None ,
873
873
range: None
874
874
} ] ) ;
875
+
876
+ let tree = if compare_semver ( odoo. full_version . as_str ( ) , "18.1.0" ) == Ordering :: Less {
877
+ ( vec ! [ Sy !( "odoo" ) , Sy !( "fields" ) ] , vec ! [ Sy !( "Field" ) , Sy !( "__get__" ) ] )
878
+ } else {
879
+ ( vec ! [ Sy !( "odoo" ) , Sy !( "orm" ) , Sy !( "fields" ) ] , vec ! [ Sy !( "Field" ) , Sy !( "__get__" ) ] )
880
+ } ;
881
+ let Some ( field_get) = odoo. get_symbol ( odoo. config . odoo_path . as_ref ( ) . unwrap ( ) , & tree, u32:: MAX ) . first ( ) . cloned ( )
882
+ else {
883
+ return ;
884
+ } ;
885
+ let field_get_borrowed = field_get. borrow ( ) ;
886
+ get_sym. borrow_mut ( ) . as_func_mut ( ) . args = field_get_borrowed. as_func ( ) . args . clone ( ) ;
875
887
}
876
888
fn eval_relational_with_related ( session : & mut SessionInfo , related_field : & ContextValue , context : & Context ) -> Option < EvaluationSymbolPtr > {
877
889
let Some ( ContextValue :: SYMBOL ( class_sym_weak) ) = context. get ( & S ! ( "field_parent" ) ) else { return None } ;
0 commit comments