12
12
13
13
try :
14
14
import odoo
15
+ from odoo .modules .db import create_categories
15
16
from odoo .tools .func import frame_codeinfo
16
17
from odoo .tools .misc import topological_sort
17
18
22
23
except ImportError :
23
24
import openerp as odoo
24
25
from openerp .modules import load_information_from_description_file as get_manifest
26
+ from openerp .modules .db import create_categories
25
27
from openerp .tools .func import frame_codeinfo
26
28
27
29
try :
@@ -573,6 +575,7 @@ def module_auto_install(cr, module, auto_install):
573
575
)
574
576
575
577
cr .execute ("UPDATE ir_module_module SET auto_install = %s WHERE name = %s" , [auto_install is not False , module ])
578
+ trigger_auto_install (cr , module )
576
579
577
580
578
581
def trigger_auto_install (cr , module ):
@@ -614,7 +617,12 @@ def trigger_auto_install(cr, module):
614
617
return bool (cr .rowcount )
615
618
616
619
617
- def new_module (cr , module , deps = (), auto_install = False ):
620
+ def _set_module_category (cr , module , category ):
621
+ cid = create_categories (cr , category .split ("/" ))
622
+ cr .execute ("UPDATE ir_module_module SET category_id=%s WHERE name=%s" , [cid , module ])
623
+
624
+
625
+ def new_module (cr , module , deps = (), auto_install = False , category = None ):
618
626
if deps :
619
627
_assert_modules_exists (cr , * deps )
620
628
@@ -633,11 +641,7 @@ def new_module(cr, module, deps=(), auto_install=False):
633
641
cr .execute ("DELETE FROM ir_module_module_dependency WHERE module_id = %s" , [mod_id ])
634
642
635
643
else :
636
- if deps and auto_install and not module .startswith ("test_" ):
637
- to_check = deps if auto_install is True else auto_install
638
- state = "to install" if modules_installed (cr , * to_check ) else "uninstalled"
639
- else :
640
- state = "uninstalled"
644
+ state = "uninstalled"
641
645
cr .execute (
642
646
"""
643
647
INSERT INTO ir_module_module (name, state, demo)
@@ -659,6 +663,9 @@ def new_module(cr, module, deps=(), auto_install=False):
659
663
for dep in deps :
660
664
new_module_dep (cr , module , dep )
661
665
666
+ if category is not None :
667
+ _set_module_category (cr , module , category )
668
+
662
669
module_auto_install (cr , module , auto_install )
663
670
664
671
@@ -735,18 +742,19 @@ def _trigger_auto_discovery(cr):
735
742
graph = {}
736
743
for module in odoo .modules .get_modules ():
737
744
manifest = get_manifest (module )
738
- graph [module ] = (set (manifest ["depends" ]), manifest ["auto_install" ])
745
+ graph [module ] = (set (manifest ["depends" ]), manifest ["auto_install" ], manifest [ "category" ] )
739
746
740
747
for module in topological_sort ({k : v [0 ] for k , v in graph .items ()}):
741
- deps , auto_install = graph [module ]
748
+ deps , auto_install , category = graph [module ]
742
749
if module not in existing :
743
- new_module (cr , module , deps = deps , auto_install = auto_install )
750
+ new_module (cr , module , deps = deps , auto_install = auto_install , category = category )
744
751
else :
745
752
current_deps = set (existing [module ])
746
753
plus = deps - current_deps
747
754
minus = current_deps - deps
748
755
if plus or minus :
749
756
module_deps_diff (cr , module , plus = plus , minus = minus )
757
+ _set_module_category (cr , module , category )
750
758
module_auto_install (cr , module , auto_install )
751
759
752
760
if module in force_installs :
0 commit comments