odoo-addon-odoo-repository 16.0.1.3.0.13__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. odoo/addons/odoo_repository/README.rst +81 -0
  2. odoo/addons/odoo_repository/__init__.py +2 -0
  3. odoo/addons/odoo_repository/__manifest__.py +58 -0
  4. odoo/addons/odoo_repository/controllers/__init__.py +1 -0
  5. odoo/addons/odoo_repository/controllers/main.py +32 -0
  6. odoo/addons/odoo_repository/data/ir_cron.xml +38 -0
  7. odoo/addons/odoo_repository/data/odoo.repository.csv +216 -0
  8. odoo/addons/odoo_repository/data/odoo_branch.xml +82 -0
  9. odoo/addons/odoo_repository/data/odoo_module.xml +16 -0
  10. odoo/addons/odoo_repository/data/odoo_repository.xml +71 -0
  11. odoo/addons/odoo_repository/data/odoo_repository_addons_path.xml +59 -0
  12. odoo/addons/odoo_repository/data/odoo_repository_org.xml +14 -0
  13. odoo/addons/odoo_repository/data/queue_job.xml +56 -0
  14. odoo/addons/odoo_repository/lib/__init__.py +0 -0
  15. odoo/addons/odoo_repository/lib/scanner.py +1302 -0
  16. odoo/addons/odoo_repository/migrations/16.0.1.1.0/post-migration.py +26 -0
  17. odoo/addons/odoo_repository/migrations/16.0.1.2.0/pre-migration.py +43 -0
  18. odoo/addons/odoo_repository/migrations/16.0.1.3.0/post-migration.py +19 -0
  19. odoo/addons/odoo_repository/models/__init__.py +18 -0
  20. odoo/addons/odoo_repository/models/authentication_token.py +12 -0
  21. odoo/addons/odoo_repository/models/odoo_author.py +16 -0
  22. odoo/addons/odoo_repository/models/odoo_branch.py +111 -0
  23. odoo/addons/odoo_repository/models/odoo_license.py +16 -0
  24. odoo/addons/odoo_repository/models/odoo_maintainer.py +31 -0
  25. odoo/addons/odoo_repository/models/odoo_module.py +24 -0
  26. odoo/addons/odoo_repository/models/odoo_module_branch.py +873 -0
  27. odoo/addons/odoo_repository/models/odoo_module_branch_version.py +123 -0
  28. odoo/addons/odoo_repository/models/odoo_module_category.py +15 -0
  29. odoo/addons/odoo_repository/models/odoo_module_dev_status.py +15 -0
  30. odoo/addons/odoo_repository/models/odoo_python_dependency.py +16 -0
  31. odoo/addons/odoo_repository/models/odoo_repository.py +664 -0
  32. odoo/addons/odoo_repository/models/odoo_repository_addons_path.py +40 -0
  33. odoo/addons/odoo_repository/models/odoo_repository_branch.py +98 -0
  34. odoo/addons/odoo_repository/models/odoo_repository_org.py +23 -0
  35. odoo/addons/odoo_repository/models/res_company.py +23 -0
  36. odoo/addons/odoo_repository/models/res_config_settings.py +23 -0
  37. odoo/addons/odoo_repository/models/ssh_key.py +12 -0
  38. odoo/addons/odoo_repository/readme/CONTRIBUTORS.rst +2 -0
  39. odoo/addons/odoo_repository/readme/DESCRIPTION.rst +1 -0
  40. odoo/addons/odoo_repository/security/ir.model.access.csv +27 -0
  41. odoo/addons/odoo_repository/security/res_groups.xml +25 -0
  42. odoo/addons/odoo_repository/static/description/README +4 -0
  43. odoo/addons/odoo_repository/static/description/icon.png +0 -0
  44. odoo/addons/odoo_repository/static/description/index.html +430 -0
  45. odoo/addons/odoo_repository/tests/__init__.py +6 -0
  46. odoo/addons/odoo_repository/tests/common.py +162 -0
  47. odoo/addons/odoo_repository/tests/test_base_scanner.py +214 -0
  48. odoo/addons/odoo_repository/tests/test_odoo_module_branch.py +97 -0
  49. odoo/addons/odoo_repository/tests/test_odoo_repository_scan.py +242 -0
  50. odoo/addons/odoo_repository/tests/test_repository_scanner.py +215 -0
  51. odoo/addons/odoo_repository/tests/test_sync_node.py +55 -0
  52. odoo/addons/odoo_repository/tests/test_utils.py +25 -0
  53. odoo/addons/odoo_repository/utils/__init__.py +0 -0
  54. odoo/addons/odoo_repository/utils/github.py +30 -0
  55. odoo/addons/odoo_repository/utils/module.py +25 -0
  56. odoo/addons/odoo_repository/utils/scanner.py +90 -0
  57. odoo/addons/odoo_repository/views/authentication_token.xml +63 -0
  58. odoo/addons/odoo_repository/views/menu.xml +38 -0
  59. odoo/addons/odoo_repository/views/odoo_author.xml +54 -0
  60. odoo/addons/odoo_repository/views/odoo_branch.xml +84 -0
  61. odoo/addons/odoo_repository/views/odoo_license.xml +40 -0
  62. odoo/addons/odoo_repository/views/odoo_maintainer.xml +69 -0
  63. odoo/addons/odoo_repository/views/odoo_module.xml +90 -0
  64. odoo/addons/odoo_repository/views/odoo_module_branch.xml +353 -0
  65. odoo/addons/odoo_repository/views/odoo_module_category.xml +40 -0
  66. odoo/addons/odoo_repository/views/odoo_module_dev_status.xml +40 -0
  67. odoo/addons/odoo_repository/views/odoo_python_dependency.xml +40 -0
  68. odoo/addons/odoo_repository/views/odoo_repository.xml +165 -0
  69. odoo/addons/odoo_repository/views/odoo_repository_addons_path.xml +49 -0
  70. odoo/addons/odoo_repository/views/odoo_repository_branch.xml +60 -0
  71. odoo/addons/odoo_repository/views/odoo_repository_org.xml +54 -0
  72. odoo/addons/odoo_repository/views/res_config_settings.xml +123 -0
  73. odoo/addons/odoo_repository/views/ssh_key.xml +63 -0
  74. odoo_addon_odoo_repository-16.0.1.3.0.13.dist-info/METADATA +100 -0
  75. odoo_addon_odoo_repository-16.0.1.3.0.13.dist-info/RECORD +77 -0
  76. odoo_addon_odoo_repository-16.0.1.3.0.13.dist-info/WHEEL +5 -0
  77. odoo_addon_odoo_repository-16.0.1.3.0.13.dist-info/top_level.txt +1 -0
@@ -0,0 +1,84 @@
1
+ <?xml version="1.0" encoding="utf-8" ?>
2
+ <!-- Copyright 2023 Camptocamp SA
3
+ License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
4
+ <odoo>
5
+
6
+ <record id="odoo_branch_view_form" model="ir.ui.view">
7
+ <field name="name">odoo.branch.form</field>
8
+ <field name="model">odoo.branch</field>
9
+ <field name="arch" type="xml">
10
+ <form>
11
+ <header>
12
+ <button
13
+ name="action_scan"
14
+ type="object"
15
+ string="Scan"
16
+ class="btn-primary"
17
+ groups="odoo_repository.group_odoo_repository_manager"
18
+ />
19
+ <button
20
+ name="action_force_scan"
21
+ type="object"
22
+ string="Force Scan"
23
+ class="btn-secondary"
24
+ confirm="This operation will restart the scan from the beginning. Are you sure?"
25
+ groups="odoo_repository.group_odoo_repository_manager"
26
+ />
27
+ </header>
28
+ <sheet>
29
+ <group>
30
+ <field
31
+ name="name"
32
+ attrs="{'readonly': [('repository_branch_ids', '!=', [])]}"
33
+ />
34
+ </group>
35
+ <group name="repositories" string="Repositories">
36
+ <field name="repository_branch_ids" nolabel="1" colspan="2">
37
+ <tree>
38
+ <field name="repository_id" />
39
+ <field name="module_ids" />
40
+ <field name="last_scanned_commit" />
41
+ </tree>
42
+ </field>
43
+ </group>
44
+ </sheet>
45
+ </form>
46
+ </field>
47
+ </record>
48
+
49
+ <record id="odoo_branch_view_tree" model="ir.ui.view">
50
+ <field name="name">odoo.branch.tree</field>
51
+ <field name="model">odoo.branch</field>
52
+ <field name="arch" type="xml">
53
+ <tree>
54
+ <field name="name" />
55
+ </tree>
56
+ </field>
57
+ </record>
58
+
59
+ <record id="odoo_branch_view_search" model="ir.ui.view">
60
+ <field name="name">odoo.branch.search</field>
61
+ <field name="model">odoo.branch</field>
62
+ <field name="type">search</field>
63
+ <field name="arch" type="xml">
64
+ <search>
65
+ <field name="name" />
66
+ <filter name="archived" string="Archived" domain="[('active', '=', False)]" />
67
+ </search>
68
+ </field>
69
+ </record>
70
+
71
+ <record id="odoo_branch_action" model="ir.actions.act_window">
72
+ <field name="name">Versions</field>
73
+ <field name="type">ir.actions.act_window</field>
74
+ <field name="res_model">odoo.branch</field>
75
+ <field name="view_id" ref="odoo_branch_view_tree" />
76
+ </record>
77
+
78
+ <menuitem
79
+ id="odoo_branch_menu"
80
+ parent="config_odoo_repository_menu"
81
+ action="odoo_branch_action"
82
+ />
83
+
84
+ </odoo>
@@ -0,0 +1,40 @@
1
+ <?xml version="1.0" encoding="utf-8" ?>
2
+ <!-- Copyright 2023 Camptocamp SA
3
+ License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
4
+ <odoo>
5
+
6
+ <record id="odoo_license_view_tree" model="ir.ui.view">
7
+ <field name="name">odoo.license.tree</field>
8
+ <field name="model">odoo.license</field>
9
+ <field name="arch" type="xml">
10
+ <tree>
11
+ <field name="name" />
12
+ </tree>
13
+ </field>
14
+ </record>
15
+
16
+ <record id="odoo_license_view_search" model="ir.ui.view">
17
+ <field name="name">odoo.license.search</field>
18
+ <field name="model">odoo.license</field>
19
+ <field name="type">search</field>
20
+ <field name="arch" type="xml">
21
+ <search>
22
+ <field name="name" />
23
+ </search>
24
+ </field>
25
+ </record>
26
+
27
+ <record id="odoo_license_action" model="ir.actions.act_window">
28
+ <field name="name">Licenses</field>
29
+ <field name="type">ir.actions.act_window</field>
30
+ <field name="res_model">odoo.license</field>
31
+ <field name="view_id" ref="odoo_license_view_tree" />
32
+ </record>
33
+
34
+ <menuitem
35
+ id="odoo_license_menu"
36
+ parent="misc_odoo_repository_menu"
37
+ action="odoo_license_action"
38
+ />
39
+
40
+ </odoo>
@@ -0,0 +1,69 @@
1
+ <?xml version="1.0" encoding="utf-8" ?>
2
+ <!-- Copyright 2023 Camptocamp SA
3
+ License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
4
+ <odoo>
5
+
6
+ <record id="odoo_maintainer_view_form" model="ir.ui.view">
7
+ <field name="name">odoo.maintainer.form</field>
8
+ <field name="model">odoo.maintainer</field>
9
+ <field name="arch" type="xml">
10
+ <form>
11
+ <sheet>
12
+ <group>
13
+ <field name="name" />
14
+ </group>
15
+ <group string="Modules maintained">
16
+ <field name="module_branch_ids" nolabel="1" colspan="2">
17
+ <tree>
18
+ <field name="repository_branch_id" />
19
+ <field name="version" />
20
+ <field name="author_ids" widget="many2many_tags" />
21
+ <field name="license_id" />
22
+ <field name="sloc_python" />
23
+ <field name="sloc_xml" />
24
+ <field name="sloc_js" />
25
+ <field name="sloc_css" />
26
+ </tree>
27
+ </field>
28
+ </group>
29
+ </sheet>
30
+ </form>
31
+ </field>
32
+ </record>
33
+
34
+ <record id="odoo_maintainer_view_tree" model="ir.ui.view">
35
+ <field name="name">odoo.maintainer.tree</field>
36
+ <field name="model">odoo.maintainer</field>
37
+ <field name="arch" type="xml">
38
+ <tree>
39
+ <field name="name" />
40
+ <field name="github_url" widget="url" />
41
+ </tree>
42
+ </field>
43
+ </record>
44
+
45
+ <record id="odoo_maintainer_view_search" model="ir.ui.view">
46
+ <field name="name">odoo.maintainer.search</field>
47
+ <field name="model">odoo.maintainer</field>
48
+ <field name="type">search</field>
49
+ <field name="arch" type="xml">
50
+ <search>
51
+ <field name="name" />
52
+ </search>
53
+ </field>
54
+ </record>
55
+
56
+ <record id="odoo_maintainer_action" model="ir.actions.act_window">
57
+ <field name="name">Maintainers</field>
58
+ <field name="type">ir.actions.act_window</field>
59
+ <field name="res_model">odoo.maintainer</field>
60
+ <field name="view_id" ref="odoo_maintainer_view_tree" />
61
+ </record>
62
+
63
+ <menuitem
64
+ id="odoo_maintainer_menu"
65
+ parent="misc_odoo_repository_menu"
66
+ action="odoo_maintainer_action"
67
+ />
68
+
69
+ </odoo>
@@ -0,0 +1,90 @@
1
+ <?xml version="1.0" encoding="utf-8" ?>
2
+ <!-- Copyright 2023 Camptocamp SA
3
+ License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
4
+ <odoo>
5
+
6
+ <record id="odoo_module_view_form" model="ir.ui.view">
7
+ <field name="name">odoo.module.form</field>
8
+ <field name="model">odoo.module</field>
9
+ <field name="arch" type="xml">
10
+ <form>
11
+ <sheet>
12
+ <div
13
+ class="alert alert-info"
14
+ role="alert"
15
+ attrs="{'invisible': [('blacklisted', '=', False)]}"
16
+ >
17
+ <p class="my-0">
18
+ <span
19
+ >You can only create blacklisted module names. The scanner is responsible to create technical module names automatically, but will ignore blacklisted modules.</span>
20
+ </p>
21
+ </div>
22
+ <group>
23
+ <field name="name" />
24
+ <field name="blacklisted" force_save="1" />
25
+ </group>
26
+ <group
27
+ name="branch_modules"
28
+ string="Exist on repositories/branches:"
29
+ attrs="{'invisible': [('blacklisted', '=', True)]}"
30
+ >
31
+ <field name="module_branch_ids" nolabel="1" colspan="2">
32
+ <tree>
33
+ <field name="repository_branch_id" />
34
+ <field name="version" />
35
+ <field name="author_ids" widget="many2many_tags" />
36
+ <field name="license_id" />
37
+ <field name="sloc_python" />
38
+ <field name="sloc_xml" />
39
+ <field name="sloc_js" />
40
+ <field name="sloc_css" />
41
+ </tree>
42
+ </field>
43
+ </group>
44
+ </sheet>
45
+ </form>
46
+ </field>
47
+ </record>
48
+
49
+ <record id="odoo_module_view_tree" model="ir.ui.view">
50
+ <field name="name">odoo.module.tree</field>
51
+ <field name="model">odoo.module</field>
52
+ <field name="arch" type="xml">
53
+ <tree>
54
+ <field name="name" />
55
+ <field name="blacklisted" />
56
+ </tree>
57
+ </field>
58
+ </record>
59
+
60
+ <record id="odoo_module_view_search" model="ir.ui.view">
61
+ <field name="name">odoo.module.search</field>
62
+ <field name="model">odoo.module</field>
63
+ <field name="type">search</field>
64
+ <field name="arch" type="xml">
65
+ <search>
66
+ <field name="name" />
67
+ <filter
68
+ name="blacklisted"
69
+ string="Blacklisted"
70
+ domain="[('blacklisted', '=', True)]"
71
+ />
72
+ </search>
73
+ </field>
74
+ </record>
75
+
76
+ <record id="odoo_module_action" model="ir.actions.act_window">
77
+ <field name="name">Technical Module Names</field>
78
+ <field name="type">ir.actions.act_window</field>
79
+ <field name="res_model">odoo.module</field>
80
+ <field name="view_id" ref="odoo_module_view_tree" />
81
+ <field name="context">{"default_blacklisted": 1}</field>
82
+ </record>
83
+
84
+ <menuitem
85
+ id="odoo_module_menu"
86
+ parent="misc_odoo_repository_menu"
87
+ action="odoo_module_action"
88
+ />
89
+
90
+ </odoo>
@@ -0,0 +1,353 @@
1
+ <?xml version="1.0" encoding="utf-8" ?>
2
+ <!-- Copyright 2023 Camptocamp SA
3
+ License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
4
+ <odoo>
5
+
6
+ <record id="odoo_module_branch_view_form" model="ir.ui.view">
7
+ <field name="name">odoo.module.branch.form</field>
8
+ <field name="model">odoo.module.branch</field>
9
+ <field name="arch" type="xml">
10
+ <form>
11
+ <sheet>
12
+ <div class="oe_button_box" name="button_box">
13
+ <button
14
+ name="open_recursive_dependencies"
15
+ type="object"
16
+ class="oe_stat_button"
17
+ icon="fa-sitemap icon"
18
+ >
19
+ <span>Dependencies</span>
20
+ </button>
21
+ </div>
22
+ <group>
23
+ <group name="manifest" string="Manifest">
24
+ <field name="title" readonly="1" />
25
+ <field name="summary" readonly="1" />
26
+ <field name="author_ids" widget="many2many_tags" readonly="1" />
27
+ <field name="maintainer_ids" widget="many2many_tags" readonly="1" />
28
+ <field name="category_id" options="{'no_open': True}" readonly="1" />
29
+ <field name="license_id" options="{'no_open': True}" readonly="1" />
30
+ <field name="version" readonly="1" />
31
+ <field
32
+ name="development_status_id"
33
+ options="{'no_open': True}"
34
+ readonly="1"
35
+ />
36
+ <field name="application" readonly="1" />
37
+ <field name="installable" readonly="1" />
38
+ <field name="auto_install" readonly="1" />
39
+ </group>
40
+ <group col="1">
41
+ <group name="others" string="Others">
42
+ <field name="module_id" readonly="1" />
43
+ <field name="branch_id" options="{'no_open': True}" readonly="1" />
44
+ <field name="repository_branch_id" readonly="1" />
45
+ <field
46
+ name="pr_url"
47
+ widget="url"
48
+ attrs="{'invisible': [('pr_url', '=', False)]}"
49
+ />
50
+ <field
51
+ name="url"
52
+ widget="url"
53
+ attrs="{'invisible': [('pr_url', '=', True)]}"
54
+ />
55
+ <field name="last_scanned_commit" readonly="1" />
56
+ <field name="removed" readonly="1" />
57
+ <field name="is_standard" readonly="1" />
58
+ <field name="is_enterprise" readonly="1" />
59
+ <field name="is_community" readonly="1" />
60
+ <field name="global_dependency_level" />
61
+ <field name="non_std_dependency_level" />
62
+ </group>
63
+ <group name="code" string="Code analysis">
64
+ <field name="sloc_python" readonly="1" />
65
+ <field name="sloc_xml" readonly="1" />
66
+ <field name="sloc_js" readonly="1" />
67
+ <field name="sloc_css" readonly="1" />
68
+ </group>
69
+ </group>
70
+ </group>
71
+ <notebook>
72
+ <page name="versions" string="Versions">
73
+ <field name="version_ids" nolabel="1" readonly="1">
74
+ <tree>
75
+ <field name="name" />
76
+ <field name="commit" />
77
+ <field name="migration_script_url" widget="url" />
78
+ </tree>
79
+ </field>
80
+ </page>
81
+ <page name="dependencies" string="Dependencies">
82
+ <field name="dependency_ids" nolabel="1" readonly="1">
83
+ <tree>
84
+ <field name="module_id" />
85
+ <field name="repository_branch_id" />
86
+ <field name="version" />
87
+ <field name="license_id" optional="show" />
88
+ <field name="development_status_id" optional="show" />
89
+ <field name="global_dependency_level" optional="show" />
90
+ <field name="non_std_dependency_level" optional="show" />
91
+ </tree>
92
+ </field>
93
+ </page>
94
+ <page name="reverse_dependencies" string="Reverse Dependencies">
95
+ <field name="reverse_dependency_ids" nolabel="1" readonly="1">
96
+ <tree>
97
+ <field name="module_id" />
98
+ <field name="repository_branch_id" />
99
+ <field name="version" />
100
+ <field name="license_id" optional="show" />
101
+ <field name="development_status_id" optional="show" />
102
+ <field name="global_dependency_level" optional="show" />
103
+ <field name="non_std_dependency_level" optional="show" />
104
+ </tree>
105
+ </field>
106
+ </page>
107
+ <page name="python_dependency_ids" string="Python Dependencies">
108
+ <field name="python_dependency_ids" nolabel="1" readonly="1" />
109
+ </page>
110
+ </notebook>
111
+ </sheet>
112
+ </form>
113
+ </field>
114
+ </record>
115
+
116
+ <record id="odoo_module_branch_view_tree" model="ir.ui.view">
117
+ <field name="name">odoo.module.branch.tree</field>
118
+ <field name="model">odoo.module.branch</field>
119
+ <field name="arch" type="xml">
120
+ <tree>
121
+ <field name="module_id" />
122
+ <field name="repository_id" optional="show" />
123
+ <field name="branch_id" optional="show" />
124
+ <field name="is_standard" optional="hide" />
125
+ <field name="is_enterprise" optional="hide" />
126
+ <field name="title" optional="show" />
127
+ <field name="summary" optional="hide" />
128
+ <field name="author_ids" widget="many2many_tags" optional="show" />
129
+ <field name="category_id" optional="hide" />
130
+ <field name="maintainer_ids" widget="many2many_tags" optional="hide" />
131
+ <field name="dependency_ids" optional="hide" />
132
+ <field name="license_id" optional="show" />
133
+ <field name="version" optional="hide" />
134
+ <field name="development_status_id" optional="hide" />
135
+ <field name="python_dependency_ids" optional="hide" />
136
+ <field name="application" optional="hide" />
137
+ <field name="installable" optional="hide" />
138
+ <field name="auto_install" optional="hide" />
139
+ <field name="last_scanned_commit" optional="hide" />
140
+ <field name="pr_url" optional="hide" widget="url" />
141
+ <field name="global_dependency_level" optional="hide" />
142
+ <field name="non_std_dependency_level" optional="hide" />
143
+ <field name="sloc_python" sum="Python" optional="show" />
144
+ <field name="sloc_xml" sum="XML" optional="show" />
145
+ <field name="sloc_js" sum="JS" optional="show" />
146
+ <field name="sloc_css" sum="CSS" optional="show" />
147
+ </tree>
148
+ </field>
149
+ </record>
150
+
151
+ <record id="odoo_module_branch_view_tree_recursive_dependencies" model="ir.ui.view">
152
+ <field name="name">odoo.module.branch.tree.recursive_dependencies</field>
153
+ <field name="model">odoo.module.branch</field>
154
+ <field name="inherit_id" ref="odoo_module_branch_view_tree" />
155
+ <field name="mode">primary</field>
156
+ <field name="priority">100</field>
157
+ <field name="arch" type="xml">
158
+ <tree position="attributes">
159
+ <attribute
160
+ name="default_order"
161
+ >global_dependency_level, non_std_dependency_level, module_name</attribute>
162
+ </tree>
163
+ <field name="application" position="attributes">
164
+ <attribute name="optional">show</attribute>
165
+ </field>
166
+ <field name="global_dependency_level" position="attributes">
167
+ <attribute name="optional">show</attribute>
168
+ </field>
169
+ <field name="non_std_dependency_level" position="attributes">
170
+ <attribute name="optional">show</attribute>
171
+ </field>
172
+ </field>
173
+ </record>
174
+
175
+ <record id="odoo_module_branch_view_search" model="ir.ui.view">
176
+ <field name="name">odoo.module.branch.search</field>
177
+ <field name="model">odoo.module.branch</field>
178
+ <field name="type">search</field>
179
+ <field name="arch" type="xml">
180
+ <search>
181
+ <field name="module_id" />
182
+ <field name="repository_id" />
183
+ <field name="org_id" />
184
+ <field name="branch_id" />
185
+ <field name="title" />
186
+ <field name="author_ids" />
187
+ <field name="maintainer_ids" />
188
+ <field name="dependency_ids" />
189
+ <field name="license_id" />
190
+ <separator />
191
+ <filter
192
+ name="is_standard"
193
+ string="Standard"
194
+ domain="[('is_standard', '=', True)]"
195
+ />
196
+ <filter
197
+ name="is_enterprise"
198
+ string="Enterprise"
199
+ domain="[('is_enterprise', '=', True)]"
200
+ />
201
+ <filter
202
+ name="is_community"
203
+ string="Community Contribution"
204
+ domain="[('is_community', '=', True)]"
205
+ />
206
+ <separator />
207
+ <filter
208
+ name="application"
209
+ string="Application"
210
+ domain="[('application', '=', True)]"
211
+ />
212
+ <filter
213
+ name="installable"
214
+ string="Installable"
215
+ domain="[('installable', '=', True)]"
216
+ />
217
+ <filter
218
+ name="auto_install"
219
+ string="Auto-Install"
220
+ domain="[('auto_install', '=', True)]"
221
+ />
222
+ <separator />
223
+ <filter
224
+ name="unmerged_pr"
225
+ string="Unmerged"
226
+ domain="[('pr_url', '!=', False)]"
227
+ />
228
+ <filter
229
+ name="with_repository"
230
+ string="With Repository"
231
+ domain="[('repository_branch_id', '!=', False)]"
232
+ />
233
+ <filter
234
+ name="without_repository"
235
+ string="Without Repository"
236
+ domain="[('repository_branch_id', '=', False)]"
237
+ />
238
+ <group expand="0" name="group_by" string="Group By">
239
+ <filter
240
+ name="group_by_org_id"
241
+ string="Organization"
242
+ context="{'group_by': 'org_id'}"
243
+ />
244
+ <filter
245
+ name="group_by_repository_id"
246
+ string="Repository"
247
+ context="{'group_by': 'repository_id'}"
248
+ />
249
+ <filter
250
+ name="group_by_branch_id"
251
+ string="Branch"
252
+ context="{'group_by': 'branch_id'}"
253
+ />
254
+ <filter
255
+ name="group_by_author_ids"
256
+ string="Author"
257
+ context="{'group_by': 'author_ids'}"
258
+ />
259
+ <filter
260
+ name="group_by_license_id"
261
+ string="License"
262
+ context="{'group_by': 'license_id'}"
263
+ />
264
+ <filter
265
+ name="group_by_development_status_id"
266
+ string="Development Status"
267
+ context="{'group_by': 'development_status_id'}"
268
+ />
269
+ </group>
270
+ </search>
271
+ </field>
272
+ </record>
273
+
274
+ <record id="odoo_module_branch_view_pivot" model="ir.ui.view">
275
+ <field name="name">odoo.module.branch.pivot</field>
276
+ <field name="model">odoo.module.branch</field>
277
+ <field name="arch" type="xml">
278
+ <pivot string="Modules" sample="1">
279
+ <field name="repository_id" type="row" />
280
+ <field name="branch_id" type="col" />
281
+ </pivot>
282
+ </field>
283
+ </record>
284
+
285
+ <record id="odoo_module_branch_view_graph" model="ir.ui.view">
286
+ <field name="name">odoo.module.branch.graph</field>
287
+ <field name="model">odoo.module.branch</field>
288
+ <field name="arch" type="xml">
289
+ <graph string="Modules" type="line" sample="1" stacked="0">
290
+ <field name="org_id" />
291
+ </graph>
292
+ </field>
293
+ </record>
294
+
295
+ <record id="odoo_module_branch_action" model="ir.actions.act_window">
296
+ <field name="name">Modules</field>
297
+ <field name="type">ir.actions.act_window</field>
298
+ <field name="res_model">odoo.module.branch</field>
299
+ <field name="view_mode">tree,form</field>
300
+ <field name="view_id" ref="odoo_module_branch_view_tree" />
301
+ <field name="context">{
302
+ 'search_default_installable': 1,
303
+ 'search_default_with_repository': 2
304
+ }</field>
305
+ </record>
306
+
307
+ <record id="odoo_module_branch_report_action" model="ir.actions.act_window">
308
+ <field name="name">Modules Analysis</field>
309
+ <field name="type">ir.actions.act_window</field>
310
+ <field name="res_model">odoo.module.branch</field>
311
+ <field name="view_mode">pivot,graph</field>
312
+ <field name="view_id" ref="odoo_module_branch_view_tree" />
313
+ <field name="context">{
314
+ 'search_default_installable': 1,
315
+ 'search_default_with_repository': 2,
316
+ 'pivot_column_groupby': ['branch_id'],
317
+ 'pivot_row_groupby': ['org_id', 'repository_id'],
318
+ 'graph_mode': 'line',
319
+ 'graph_stacked': 0,
320
+ 'graph_measure': '__count__',
321
+ 'graph_groupbys': ['branch_id', 'org_id'],
322
+ }</field>
323
+ </record>
324
+
325
+ <record
326
+ id="odoo_module_branch_action_recursive_dependencies"
327
+ model="ir.actions.act_window"
328
+ >
329
+ <field name="name">Dependencies</field>
330
+ <field name="type">ir.actions.act_window</field>
331
+ <field name="res_model">odoo.module.branch</field>
332
+ <field name="view_id" ref="odoo_module_branch_view_tree_recursive_dependencies" />
333
+ </record>
334
+
335
+ <menuitem
336
+ id="modules_odoo_repository_menu"
337
+ parent="data_odoo_repository_menu"
338
+ name="Modules"
339
+ />
340
+
341
+ <menuitem
342
+ id="odoo_module_branch_menu"
343
+ parent="modules_odoo_repository_menu"
344
+ action="odoo_module_branch_action"
345
+ />
346
+
347
+ <menuitem
348
+ id="odoo_module_branch_report_menu"
349
+ parent="report_odoo_repository_menu"
350
+ action="odoo_module_branch_report_action"
351
+ />
352
+
353
+ </odoo>