From c45f1a2dd6b968e0568392c538cf845b836abd00 Mon Sep 17 00:00:00 2001 From: Xavier-Do Date: Wed, 4 Dec 2024 09:28:15 +0100 Subject: [PATCH] [IMP] runbot: add qualifiers ir.model.fields --- runbot/models/build_error.py | 22 ++++++++++++++++++++++ runbot/views/build_error_views.xml | 5 +++-- 2 files changed, 25 insertions(+), 2 deletions(-) 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
+
+