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 re
|
||||
from odoo import models, fields, api, tools
|
||||
from odoo.exceptions import ValidationError
|
||||
|
||||
|
||||
_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))
|
||||
|
||||
_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')
|
||||
def _compute_version_number(self):
|
||||
for version in self:
|
||||
|
@ -97,7 +97,7 @@ class RunbotCase(TransactionCase):
|
||||
'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.initial_server_commit = self.Commit.create({
|
||||
|
@ -6,17 +6,17 @@ class TestVersion(RunbotCase):
|
||||
|
||||
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.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.assertFalse(saas_version.is_major)
|
||||
|
||||
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.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>
|
||||
<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="tags_min_version_id" invisible="not test_tags"/>
|
||||
<field name="tags_max_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" options="{'no_create': True, 'no_create_edit':True}" />
|
||||
</group>
|
||||
<group>
|
||||
<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="global_result"/>
|
||||
<field name="host"/>
|
||||
<field name="keep_host"/>
|
||||
<field name="host_id"/>
|
||||
<field name="job_start" groups="base.group_no_one"/>
|
||||
<field name="job_end" groups="base.group_no_one"/>
|
||||
|
Loading…
Reference in New Issue
Block a user