diff --git a/runbot/models/build_config.py b/runbot/models/build_config.py
index 775e2a08..1f639397 100644
--- a/runbot/models/build_config.py
+++ b/runbot/models/build_config.py
@@ -138,6 +138,7 @@ class ConfigStep(models.Model):
# general info
name = fields.Char('Step name', required=True, tracking=True, help="Unique name for step please use trigram as postfix for custom step_ids")
domain_filter = fields.Char('Domain filter', tracking=True)
+
job_type = fields.Selection(TYPES, default='install_odoo', required=True, tracking=True, ondelete={t[0]: 'cascade' for t in [TYPES]})
protected = fields.Boolean('Protected', default=False, tracking=True)
default_sequence = fields.Integer('Sequence', default=100, tracking=True) # or run after? # or in many2many rel?
@@ -244,7 +245,7 @@ class ConfigStep(models.Model):
return super(ConfigStep, self).write(values)
def unlink(self):
- if self.protected:
+ if any(record.protected for record in self):
raise UserError('Protected step')
super(ConfigStep, self).unlink()
diff --git a/runbot/models/build_config_codeowner.py b/runbot/models/build_config_codeowner.py
index a3dd8c5f..735d42c2 100644
--- a/runbot/models/build_config_codeowner.py
+++ b/runbot/models/build_config_codeowner.py
@@ -25,7 +25,7 @@ class ConfigStep(models.Model):
return pr_by_commit
def _get_module(self, repo, file):
- for addons_path in repo.addons_paths.split(','):
+ for addons_path in (repo.addons_paths or '').split(','):
base_path = f'{repo.name}/{addons_path}'
if file.startswith(base_path):
return file.replace(base_path, '').strip('/').split('/')[0]
@@ -110,7 +110,6 @@ class ConfigStep(models.Model):
codeowners = build.env['runbot.codeowner'].search([('project_id', '=', bundle.project_id.id)])
regexes = self._codeowners_regexes(codeowners, build.params_id.version_id)
modified_files = self._modified_files(build, pr_by_commit.keys())
-
for commit_link, files in modified_files.items():
build._log('','Checking %s codeowner regexed on %s files' % (len(regexes), len(files)))
@@ -118,8 +117,11 @@ class ConfigStep(models.Model):
reviewer_per_file = self._reviewer_per_file(files, regexes, ownerships, commit_link.commit_id.repo_id)
for file, file_reviewers in reviewer_per_file.items():
href = 'https://%s/blob/%s/%s' % (commit_link.branch_id.remote_id.base_url, commit_link.commit_id.name, file.split('/', 1)[-1])
- build._log('', 'Adding %s to reviewers for file [%s](%s)' % (', '.join(sorted(file_reviewers)), file, href), log_type='markdown')
- reviewers |= file_reviewers
+ if file_reviewers:
+ build._log('', 'Adding %s to reviewers for file [%s](%s)' % (', '.join(sorted(file_reviewers)), file, href), log_type='markdown')
+ reviewers |= file_reviewers
+ else:
+ build._log('', 'No reviewer for file [%s](%s)' % (file, href), log_type='markdown')
if reviewers:
pr = pr_by_commit[commit_link]
diff --git a/runbot/views/branch_views.xml b/runbot/views/branch_views.xml
index 6031d793..dcecc575 100644
--- a/runbot/views/branch_views.xml
+++ b/runbot/views/branch_views.xml
@@ -31,6 +31,7 @@
runbot.branch
+
diff --git a/runbot/views/config_views.xml b/runbot/views/config_views.xml
index 9deb9ddf..f470fdb4 100644
--- a/runbot/views/config_views.xml
+++ b/runbot/views/config_views.xml
@@ -117,6 +117,13 @@
+
+
+
+
+
+
+