diff --git a/runbot/models/build_error.py b/runbot/models/build_error.py index 159c2ffb..f85e6aac 100644 --- a/runbot/models/build_error.py +++ b/runbot/models/build_error.py @@ -681,6 +681,28 @@ class ErrorQualifyRegex(models.Model): test_ids = fields.One2many('runbot.error.qualify.test', 'qualify_regex_id', string="Test Sample", help="Error samples to test qualifying regex") + def action_generate_fields(self): + for rec in self: + for field in list(re.compile(rec.regex).groupindex.keys()): + existing = self.env['ir.model.fields'].search([('model', '=', 'runbot.build.error.content'), ('name', '=', f'x_{field}')]) + if existing: + _logger.info(f"Field x_%s already exists", field) + else: + _logger.info(f"Creating field x_%s", field) + self.env['ir.model.fields'].create({ + 'model_id': self.env['ir.model']._get('runbot.build.error.content').id, + 'name': f'x_{field}', + 'field_description': ' '.join(field.capitalize().split('_')), + 'ttype': 'char', + 'required': False, + 'readonly': True, + 'store': True, + 'depends': 'qualifiers', + 'compute': f""" +for error_content in self: + error_content['x_{field}'] = error_content.qualifiers.get('{field}', '')""", + }) + @api.constrains('regex') def _validate(self): for rec in self: diff --git a/runbot/views/build_error_views.xml b/runbot/views/build_error_views.xml index 39d62c48..ef8d78e4 100644 --- a/runbot/views/build_error_views.xml +++ b/runbot/views/build_error_views.xml @@ -433,8 +433,6 @@ runbot.error.qualify.regex - - @@ -447,6 +445,9 @@ runbot.error.qualify.regex + + + The regular expresion must have at least one named group pattern e.g: '(?P<module>\w+)'
'(?P<module>\w+)'