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.
- odoo/addons/odoo_repository/README.rst +81 -0
- odoo/addons/odoo_repository/__init__.py +2 -0
- odoo/addons/odoo_repository/__manifest__.py +58 -0
- odoo/addons/odoo_repository/controllers/__init__.py +1 -0
- odoo/addons/odoo_repository/controllers/main.py +32 -0
- odoo/addons/odoo_repository/data/ir_cron.xml +38 -0
- odoo/addons/odoo_repository/data/odoo.repository.csv +216 -0
- odoo/addons/odoo_repository/data/odoo_branch.xml +82 -0
- odoo/addons/odoo_repository/data/odoo_module.xml +16 -0
- odoo/addons/odoo_repository/data/odoo_repository.xml +71 -0
- odoo/addons/odoo_repository/data/odoo_repository_addons_path.xml +59 -0
- odoo/addons/odoo_repository/data/odoo_repository_org.xml +14 -0
- odoo/addons/odoo_repository/data/queue_job.xml +56 -0
- odoo/addons/odoo_repository/lib/__init__.py +0 -0
- odoo/addons/odoo_repository/lib/scanner.py +1302 -0
- odoo/addons/odoo_repository/migrations/16.0.1.1.0/post-migration.py +26 -0
- odoo/addons/odoo_repository/migrations/16.0.1.2.0/pre-migration.py +43 -0
- odoo/addons/odoo_repository/migrations/16.0.1.3.0/post-migration.py +19 -0
- odoo/addons/odoo_repository/models/__init__.py +18 -0
- odoo/addons/odoo_repository/models/authentication_token.py +12 -0
- odoo/addons/odoo_repository/models/odoo_author.py +16 -0
- odoo/addons/odoo_repository/models/odoo_branch.py +111 -0
- odoo/addons/odoo_repository/models/odoo_license.py +16 -0
- odoo/addons/odoo_repository/models/odoo_maintainer.py +31 -0
- odoo/addons/odoo_repository/models/odoo_module.py +24 -0
- odoo/addons/odoo_repository/models/odoo_module_branch.py +873 -0
- odoo/addons/odoo_repository/models/odoo_module_branch_version.py +123 -0
- odoo/addons/odoo_repository/models/odoo_module_category.py +15 -0
- odoo/addons/odoo_repository/models/odoo_module_dev_status.py +15 -0
- odoo/addons/odoo_repository/models/odoo_python_dependency.py +16 -0
- odoo/addons/odoo_repository/models/odoo_repository.py +664 -0
- odoo/addons/odoo_repository/models/odoo_repository_addons_path.py +40 -0
- odoo/addons/odoo_repository/models/odoo_repository_branch.py +98 -0
- odoo/addons/odoo_repository/models/odoo_repository_org.py +23 -0
- odoo/addons/odoo_repository/models/res_company.py +23 -0
- odoo/addons/odoo_repository/models/res_config_settings.py +23 -0
- odoo/addons/odoo_repository/models/ssh_key.py +12 -0
- odoo/addons/odoo_repository/readme/CONTRIBUTORS.rst +2 -0
- odoo/addons/odoo_repository/readme/DESCRIPTION.rst +1 -0
- odoo/addons/odoo_repository/security/ir.model.access.csv +27 -0
- odoo/addons/odoo_repository/security/res_groups.xml +25 -0
- odoo/addons/odoo_repository/static/description/README +4 -0
- odoo/addons/odoo_repository/static/description/icon.png +0 -0
- odoo/addons/odoo_repository/static/description/index.html +430 -0
- odoo/addons/odoo_repository/tests/__init__.py +6 -0
- odoo/addons/odoo_repository/tests/common.py +162 -0
- odoo/addons/odoo_repository/tests/test_base_scanner.py +214 -0
- odoo/addons/odoo_repository/tests/test_odoo_module_branch.py +97 -0
- odoo/addons/odoo_repository/tests/test_odoo_repository_scan.py +242 -0
- odoo/addons/odoo_repository/tests/test_repository_scanner.py +215 -0
- odoo/addons/odoo_repository/tests/test_sync_node.py +55 -0
- odoo/addons/odoo_repository/tests/test_utils.py +25 -0
- odoo/addons/odoo_repository/utils/__init__.py +0 -0
- odoo/addons/odoo_repository/utils/github.py +30 -0
- odoo/addons/odoo_repository/utils/module.py +25 -0
- odoo/addons/odoo_repository/utils/scanner.py +90 -0
- odoo/addons/odoo_repository/views/authentication_token.xml +63 -0
- odoo/addons/odoo_repository/views/menu.xml +38 -0
- odoo/addons/odoo_repository/views/odoo_author.xml +54 -0
- odoo/addons/odoo_repository/views/odoo_branch.xml +84 -0
- odoo/addons/odoo_repository/views/odoo_license.xml +40 -0
- odoo/addons/odoo_repository/views/odoo_maintainer.xml +69 -0
- odoo/addons/odoo_repository/views/odoo_module.xml +90 -0
- odoo/addons/odoo_repository/views/odoo_module_branch.xml +353 -0
- odoo/addons/odoo_repository/views/odoo_module_category.xml +40 -0
- odoo/addons/odoo_repository/views/odoo_module_dev_status.xml +40 -0
- odoo/addons/odoo_repository/views/odoo_python_dependency.xml +40 -0
- odoo/addons/odoo_repository/views/odoo_repository.xml +165 -0
- odoo/addons/odoo_repository/views/odoo_repository_addons_path.xml +49 -0
- odoo/addons/odoo_repository/views/odoo_repository_branch.xml +60 -0
- odoo/addons/odoo_repository/views/odoo_repository_org.xml +54 -0
- odoo/addons/odoo_repository/views/res_config_settings.xml +123 -0
- odoo/addons/odoo_repository/views/ssh_key.xml +63 -0
- odoo_addon_odoo_repository-16.0.1.3.0.13.dist-info/METADATA +100 -0
- odoo_addon_odoo_repository-16.0.1.3.0.13.dist-info/RECORD +77 -0
- odoo_addon_odoo_repository-16.0.1.3.0.13.dist-info/WHEEL +5 -0
- odoo_addon_odoo_repository-16.0.1.3.0.13.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
# Copyright 2023 Camptocamp SA
|
|
2
|
+
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
|
3
|
+
|
|
4
|
+
from odoo import api, fields, models
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class OdooModuleBranchVersion(models.Model):
|
|
8
|
+
_name = "odoo.module.branch.version"
|
|
9
|
+
_description = "Version of a Odoo Module on a given branch"
|
|
10
|
+
_order = "branch_sequence DESC, sequence DESC"
|
|
11
|
+
|
|
12
|
+
module_branch_id = fields.Many2one(
|
|
13
|
+
comodel_name="odoo.module.branch",
|
|
14
|
+
ondelete="cascade",
|
|
15
|
+
string="Module",
|
|
16
|
+
required=True,
|
|
17
|
+
index=True,
|
|
18
|
+
)
|
|
19
|
+
branch_id = fields.Many2one(
|
|
20
|
+
related="module_branch_id.branch_id",
|
|
21
|
+
store=True,
|
|
22
|
+
)
|
|
23
|
+
module_id = fields.Many2one(
|
|
24
|
+
string="Module",
|
|
25
|
+
related="module_branch_id.module_id",
|
|
26
|
+
store=True,
|
|
27
|
+
index=True,
|
|
28
|
+
)
|
|
29
|
+
module_name = fields.Char(
|
|
30
|
+
string="Module Technical Name",
|
|
31
|
+
related="module_branch_id.module_name",
|
|
32
|
+
store=True,
|
|
33
|
+
index=True,
|
|
34
|
+
)
|
|
35
|
+
branch_sequence = fields.Integer(
|
|
36
|
+
string="Branch Sequence",
|
|
37
|
+
related="branch_id.sequence",
|
|
38
|
+
store=True,
|
|
39
|
+
)
|
|
40
|
+
name = fields.Char(required=True)
|
|
41
|
+
manifest_value = fields.Char(
|
|
42
|
+
required=True, help="Technical field to host the manifest value."
|
|
43
|
+
)
|
|
44
|
+
commit = fields.Char()
|
|
45
|
+
has_migration_script = fields.Boolean(default=False)
|
|
46
|
+
migration_script_url = fields.Char(
|
|
47
|
+
string="Migration Script",
|
|
48
|
+
compute="_compute_migration_script_url",
|
|
49
|
+
)
|
|
50
|
+
sequence = fields.Integer()
|
|
51
|
+
|
|
52
|
+
@api.model_create_multi
|
|
53
|
+
def create(self, vals_list):
|
|
54
|
+
res = super().create(vals_list)
|
|
55
|
+
res._recompute_sequence()
|
|
56
|
+
return res
|
|
57
|
+
|
|
58
|
+
def write(self, values):
|
|
59
|
+
res = super().write(values)
|
|
60
|
+
self._recompute_sequence()
|
|
61
|
+
return res
|
|
62
|
+
|
|
63
|
+
def _recompute_sequence(self):
|
|
64
|
+
"""Recompute the 'sequence' field to get versions sorted."""
|
|
65
|
+
self.flush_recordset()
|
|
66
|
+
versions_to_recompute = self.search(
|
|
67
|
+
[("module_branch_id", "in", self.module_branch_id.ids)]
|
|
68
|
+
)
|
|
69
|
+
for version in versions_to_recompute:
|
|
70
|
+
query = """
|
|
71
|
+
UPDATE odoo_module_branch_version
|
|
72
|
+
SET sequence = (
|
|
73
|
+
SELECT pos.position
|
|
74
|
+
FROM (
|
|
75
|
+
SELECT
|
|
76
|
+
id,
|
|
77
|
+
row_number() OVER (
|
|
78
|
+
ORDER BY string_to_array(name, '.')::int[]
|
|
79
|
+
) AS position
|
|
80
|
+
FROM odoo_module_branch_version
|
|
81
|
+
WHERE module_branch_id = %(module_branch_id)s
|
|
82
|
+
) as pos
|
|
83
|
+
WHERE pos.id = %(id)s
|
|
84
|
+
)
|
|
85
|
+
WHERE id = %(id)s;
|
|
86
|
+
"""
|
|
87
|
+
args = {
|
|
88
|
+
"module_branch_id": version.module_branch_id.id,
|
|
89
|
+
"id": version.id,
|
|
90
|
+
}
|
|
91
|
+
self.env.cr.execute(query, args)
|
|
92
|
+
self.invalidate_recordset(["sequence"])
|
|
93
|
+
|
|
94
|
+
@api.depends("name", "has_migration_script")
|
|
95
|
+
def _compute_migration_script_url(self):
|
|
96
|
+
for rec in self:
|
|
97
|
+
rec.migration_script_url = False
|
|
98
|
+
repo = rec.module_branch_id.repository_id
|
|
99
|
+
if rec.has_migration_script:
|
|
100
|
+
migration_path = "/".join(
|
|
101
|
+
[
|
|
102
|
+
rec.module_branch_id.addons_path or ".",
|
|
103
|
+
rec.module_branch_id.module_name,
|
|
104
|
+
"migrations",
|
|
105
|
+
rec.manifest_value,
|
|
106
|
+
]
|
|
107
|
+
)
|
|
108
|
+
rb = rec.module_branch_id.repository_branch_id
|
|
109
|
+
branch_name = rb.cloned_branch or rb.branch_id.name
|
|
110
|
+
rec.migration_script_url = repo._get_resource_url(
|
|
111
|
+
branch_name, migration_path
|
|
112
|
+
)
|
|
113
|
+
|
|
114
|
+
def _to_dict(self):
|
|
115
|
+
"""Convert version data to a dictionary."""
|
|
116
|
+
self.ensure_one()
|
|
117
|
+
return {
|
|
118
|
+
"name": self.name,
|
|
119
|
+
"manifest_value": self.manifest_value,
|
|
120
|
+
"commit": self.commit,
|
|
121
|
+
"has_migration_script": self.has_migration_script,
|
|
122
|
+
"sequence": self.sequence,
|
|
123
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Copyright 2023 Camptocamp SA
|
|
2
|
+
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
|
3
|
+
|
|
4
|
+
from odoo import fields, models
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class OdooModuleCategory(models.Model):
|
|
8
|
+
_name = "odoo.module.category"
|
|
9
|
+
_description = "Odoo Module Category"
|
|
10
|
+
|
|
11
|
+
name = fields.Char(required=True, index=True)
|
|
12
|
+
|
|
13
|
+
_sql_constraints = [
|
|
14
|
+
("name_uniq", "UNIQUE (name)", "This module category already exists."),
|
|
15
|
+
]
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Copyright 2023 Camptocamp SA
|
|
2
|
+
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
|
3
|
+
|
|
4
|
+
from odoo import fields, models
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class OdooModuleDevStatus(models.Model):
|
|
8
|
+
_name = "odoo.module.dev.status"
|
|
9
|
+
_description = "Odoo Module Development Status"
|
|
10
|
+
|
|
11
|
+
name = fields.Char(required=True, index=True)
|
|
12
|
+
|
|
13
|
+
_sql_constraints = [
|
|
14
|
+
("name_uniq", "UNIQUE (name)", "This development_status already exists."),
|
|
15
|
+
]
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Copyright 2023 Camptocamp SA
|
|
2
|
+
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
|
3
|
+
|
|
4
|
+
from odoo import fields, models
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class OdooPythonDependency(models.Model):
|
|
8
|
+
_name = "odoo.python.dependency"
|
|
9
|
+
_description = "Odoo Python Dependency"
|
|
10
|
+
_order = "name"
|
|
11
|
+
|
|
12
|
+
name = fields.Char(required=True, index=True)
|
|
13
|
+
|
|
14
|
+
_sql_constraints = [
|
|
15
|
+
("name_uniq", "UNIQUE (name)", "This Python dependency already exists."),
|
|
16
|
+
]
|