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,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
+ ]