[FIX] fix codeowner

This commit is contained in:
Xavier-Do 2022-11-24 15:14:43 +01:00 committed by Christophe Monniez
parent ff41311cb5
commit 1e8e059734
4 changed files with 16 additions and 5 deletions

View File

@ -138,6 +138,7 @@ class ConfigStep(models.Model):
# general info # 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") 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) 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]}) 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) protected = fields.Boolean('Protected', default=False, tracking=True)
default_sequence = fields.Integer('Sequence', default=100, tracking=True) # or run after? # or in many2many rel? 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) return super(ConfigStep, self).write(values)
def unlink(self): def unlink(self):
if self.protected: if any(record.protected for record in self):
raise UserError('Protected step') raise UserError('Protected step')
super(ConfigStep, self).unlink() super(ConfigStep, self).unlink()

View File

@ -25,7 +25,7 @@ class ConfigStep(models.Model):
return pr_by_commit return pr_by_commit
def _get_module(self, repo, file): 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}' base_path = f'{repo.name}/{addons_path}'
if file.startswith(base_path): if file.startswith(base_path):
return file.replace(base_path, '').strip('/').split('/')[0] 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)]) codeowners = build.env['runbot.codeowner'].search([('project_id', '=', bundle.project_id.id)])
regexes = self._codeowners_regexes(codeowners, build.params_id.version_id) regexes = self._codeowners_regexes(codeowners, build.params_id.version_id)
modified_files = self._modified_files(build, pr_by_commit.keys()) modified_files = self._modified_files(build, pr_by_commit.keys())
for commit_link, files in modified_files.items(): for commit_link, files in modified_files.items():
build._log('','Checking %s codeowner regexed on %s files' % (len(regexes), len(files))) 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) 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(): 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]) 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') if file_reviewers:
reviewers |= 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: if reviewers:
pr = pr_by_commit[commit_link] pr = pr_by_commit[commit_link]

View File

@ -31,6 +31,7 @@
<field name="model">runbot.branch</field> <field name="model">runbot.branch</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<tree string="Branches"> <tree string="Branches">
<field name="create_date"/>
<field name="remote_id"/> <field name="remote_id"/>
<field name="name"/> <field name="name"/>
</tree> </tree>

View File

@ -117,6 +117,13 @@
<group string="Codeowner settings" attrs="{'invisible': [('job_type', 'not in', ('codeowner', 'python'))]}"> <group string="Codeowner settings" attrs="{'invisible': [('job_type', 'not in', ('codeowner', 'python'))]}">
<field name="fallback_reviewer"/> <field name="fallback_reviewer"/>
</group> </group>
<group>
<field name="step_order_ids" groups="base.group_no_one" readonly="1">
<tree>
<field name="config_id" widget="Many2one" options="{'no_edit': 1}"/>
</tree>
</field>
</group>
</sheet> </sheet>
<div class="oe_chatter"> <div class="oe_chatter">
<field name="message_follower_ids" widget="mail_followers"/> <field name="message_follower_ids" widget="mail_followers"/>