@@ -689,7 +689,33 @@ def _set_module_category(cr, module, category):
689
689
cr .execute ("UPDATE ir_module_module SET category_id=%s WHERE name=%s" , [cid , module ])
690
690
691
691
692
- def new_module (cr , module , deps = (), auto_install = False , category = None ):
692
+ def _set_module_countries (cr , module , countries ):
693
+ if not table_exists (cr , "module_country" ):
694
+ return
695
+ clean_query = """
696
+ DELETE
697
+ FROM module_country mc
698
+ USING ir_module_module m
699
+ WHERE m.id = mc.module_id
700
+ AND m.name = %s
701
+ """
702
+ cr .execute (clean_query , [module ])
703
+
704
+ if not countries :
705
+ return
706
+
707
+ insert_query = """
708
+ INSERT INTO module_country(module_id, country_id)
709
+ SELECT m.id, c.id
710
+ FROM ir_module_module m,
711
+ res_country c
712
+ WHERE m.name = %s
713
+ AND c.code IN %s
714
+ """
715
+ cr .execute (insert_query , [module , tuple (c .upper () for c in countries )])
716
+
717
+
718
+ def new_module (cr , module , deps = (), auto_install = False , category = None , countries = ()):
693
719
if deps :
694
720
_assert_modules_exists (cr , * deps )
695
721
@@ -732,6 +758,7 @@ def new_module(cr, module, deps=(), auto_install=False, category=None):
732
758
733
759
if category is not None :
734
760
_set_module_category (cr , module , category )
761
+ _set_module_countries (cr , module , countries )
735
762
736
763
module_auto_install (cr , module , auto_install )
737
764
trigger_auto_install (cr , module )
@@ -822,19 +849,25 @@ def _trigger_auto_discovery(cr):
822
849
graph = {}
823
850
for module in odoo .modules .get_modules ():
824
851
manifest = get_manifest (module )
825
- graph [module ] = (set (manifest ["depends" ]), manifest ["auto_install" ], manifest ["category" ])
852
+ graph [module ] = (
853
+ set (manifest ["depends" ]),
854
+ manifest ["auto_install" ],
855
+ manifest ["category" ],
856
+ manifest .get ("countries" ),
857
+ )
826
858
827
859
for module in topological_sort ({k : v [0 ] for k , v in graph .items ()}):
828
- deps , auto_install , category = graph [module ]
860
+ deps , auto_install , category , countries = graph [module ]
829
861
if module not in existing :
830
- new_module (cr , module , deps = deps , auto_install = auto_install , category = category )
862
+ new_module (cr , module , deps = deps , auto_install = auto_install , category = category , countries = countries )
831
863
else :
832
864
current_deps = set (existing [module ])
833
865
plus = deps - current_deps
834
866
minus = current_deps - deps
835
867
if plus or minus :
836
868
module_deps_diff (cr , module , plus = plus , minus = minus )
837
869
_set_module_category (cr , module , category )
870
+ _set_module_countries (cr , module , countries )
838
871
module_auto_install (cr , module , auto_install )
839
872
840
873
if module in force_installs :
0 commit comments