mirror of
https://github.com/odoo/runbot.git
synced 2025-03-15 15:35:46 +07:00
[IMP] runbot: avoid accidental version creation
This commit is contained in:
parent
ea9b714e6c
commit
3fcb7687dd
@ -1,6 +1,7 @@
|
|||||||
import logging
|
import logging
|
||||||
import re
|
import re
|
||||||
from odoo import models, fields, api, tools
|
from odoo import models, fields, api, tools
|
||||||
|
from odoo.exceptions import ValidationError
|
||||||
|
|
||||||
|
|
||||||
_logger = logging.getLogger(__name__)
|
_logger = logging.getLogger(__name__)
|
||||||
@ -25,6 +26,20 @@ class Version(models.Model):
|
|||||||
|
|
||||||
dockerfile_id = fields.Many2one('runbot.dockerfile', default=lambda self: self.env['runbot.version'].search([('name', '=', 'master')], limit=1).dockerfile_id or self.env.ref('runbot.docker_default', raise_if_not_found=False))
|
dockerfile_id = fields.Many2one('runbot.dockerfile', default=lambda self: self.env['runbot.version'].search([('name', '=', 'master')], limit=1).dockerfile_id or self.env.ref('runbot.docker_default', raise_if_not_found=False))
|
||||||
|
|
||||||
|
_sql_constraints = [
|
||||||
|
('unique_name', 'unique (name)', 'avoid duplicate name'),
|
||||||
|
('unique_number', 'unique (number)', 'avoid duplicate number'),
|
||||||
|
]
|
||||||
|
|
||||||
|
@api.constrains("name")
|
||||||
|
def _check_match_is_base(self):
|
||||||
|
icp = self.env['ir.config_parameter'].sudo()
|
||||||
|
regex = icp.get_param('runbot.runbot_is_base_regex', False)
|
||||||
|
if regex:
|
||||||
|
for record in self:
|
||||||
|
if not re.match(regex, record.name):
|
||||||
|
raise ValidationError(f"Version name {record.name} does not match base version regex {regex}")
|
||||||
|
|
||||||
@api.depends('name')
|
@api.depends('name')
|
||||||
def _compute_version_number(self):
|
def _compute_version_number(self):
|
||||||
for version in self:
|
for version in self:
|
||||||
|
@ -97,7 +97,7 @@ class RunbotCase(TransactionCase):
|
|||||||
'token': '123',
|
'token': '123',
|
||||||
})
|
})
|
||||||
|
|
||||||
self.version_13 = self.Version.create({'name': '13.0'})
|
self.version_13 = self.Version._get('13.0')
|
||||||
self.default_config = self.env.ref('runbot.runbot_build_config_default')
|
self.default_config = self.env.ref('runbot.runbot_build_config_default')
|
||||||
|
|
||||||
self.initial_server_commit = self.Commit.create({
|
self.initial_server_commit = self.Commit.create({
|
||||||
|
@ -6,17 +6,17 @@ class TestVersion(RunbotCase):
|
|||||||
|
|
||||||
def test_basic_version(self):
|
def test_basic_version(self):
|
||||||
|
|
||||||
major_version = self.Version.create({'name': '12.0'})
|
major_version = self.Version._get('12.0')
|
||||||
self.assertEqual(major_version.number, '12.00')
|
self.assertEqual(major_version.number, '12.00')
|
||||||
self.assertTrue(major_version.is_major)
|
self.assertTrue(major_version.is_major)
|
||||||
|
|
||||||
saas_version = self.Version.create({'name': 'saas-12.1'})
|
saas_version = self.Version._get('saas-12.1')
|
||||||
self.assertEqual(saas_version.number, '12.01')
|
self.assertEqual(saas_version.number, '12.01')
|
||||||
self.assertFalse(saas_version.is_major)
|
self.assertFalse(saas_version.is_major)
|
||||||
|
|
||||||
self.assertGreater(saas_version.number, major_version.number)
|
self.assertGreater(saas_version.number, major_version.number)
|
||||||
|
|
||||||
master_version = self.Version.create({'name': 'master'})
|
master_version = self.Version._get('master')
|
||||||
self.assertEqual(master_version.number, '~')
|
self.assertEqual(master_version.number, '~')
|
||||||
self.assertGreater(master_version.number, saas_version.number)
|
self.assertGreater(master_version.number, saas_version.number)
|
||||||
|
|
||||||
|
@ -57,8 +57,8 @@
|
|||||||
<button name="action_copy_canonical_tag" type="object" groups="runbot.group_runbot_admin">Disable test using canonical tag</button>
|
<button name="action_copy_canonical_tag" type="object" groups="runbot.group_runbot_admin">Disable test using canonical tag</button>
|
||||||
<field name="test_tags" decoration-danger="True" readonly="1" groups="!runbot.group_runbot_admin"/>
|
<field name="test_tags" decoration-danger="True" readonly="1" groups="!runbot.group_runbot_admin"/>
|
||||||
<field name="test_tags" decoration-danger="True" groups="runbot.group_runbot_admin"/>
|
<field name="test_tags" decoration-danger="True" groups="runbot.group_runbot_admin"/>
|
||||||
<field name="tags_min_version_id" invisible="not test_tags"/>
|
<field name="tags_min_version_id" invisible="not test_tags" options="{'no_create': True, 'no_create_edit':True}"/>
|
||||||
<field name="tags_max_version_id" invisible="not test_tags" />
|
<field name="tags_max_version_id" invisible="not test_tags" options="{'no_create': True, 'no_create_edit':True}" />
|
||||||
</group>
|
</group>
|
||||||
<group>
|
<group>
|
||||||
<field name="previous_error_id" readonly="1" invisible="not previous_error_id" text-decoration-danger="True"/>
|
<field name="previous_error_id" readonly="1" invisible="not previous_error_id" text-decoration-danger="True"/>
|
||||||
|
@ -67,6 +67,7 @@
|
|||||||
<field name="local_result"/>
|
<field name="local_result"/>
|
||||||
<field name="global_result"/>
|
<field name="global_result"/>
|
||||||
<field name="host"/>
|
<field name="host"/>
|
||||||
|
<field name="keep_host"/>
|
||||||
<field name="host_id"/>
|
<field name="host_id"/>
|
||||||
<field name="job_start" groups="base.group_no_one"/>
|
<field name="job_start" groups="base.group_no_one"/>
|
||||||
<field name="job_end" groups="base.group_no_one"/>
|
<field name="job_end" groups="base.group_no_one"/>
|
||||||
|
Loading…
Reference in New Issue
Block a user