From 65f2badd090a7d1ba2ffac31cb14cb366419f5b8 Mon Sep 17 00:00:00 2001 From: Christophe Monniez Date: Mon, 28 Oct 2024 13:21:13 +0100 Subject: [PATCH] [IMP] runbot: add similar errors page Add a page on error content showing errors with similar qualifiers. --- runbot/models/build_error.py | 18 ++++++++++++++++++ runbot/views/build_error_views.xml | 15 +++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/runbot/models/build_error.py b/runbot/models/build_error.py index a20480d9..159c2ffb 100644 --- a/runbot/models/build_error.py +++ b/runbot/models/build_error.py @@ -353,6 +353,7 @@ class BuildErrorContent(models.Model): trigger_ids = fields.Many2many('runbot.trigger', compute='_compute_trigger_ids', string='Triggers', search='_search_trigger_ids') tag_ids = fields.Many2many('runbot.build.error.tag', string='Tags') qualifiers = JsonDictField('Qualifiers', index=True) + similar_ids = fields.One2many('runbot.build.error.content', compute='_compute_similar_ids') responsible = fields.Many2one(related='error_id.responsible') customer = fields.Many2one(related='error_id.customer') @@ -442,6 +443,22 @@ class BuildErrorContent(models.Model): for error_content in self: error_content.error_display_id = error_content.error_id.id + @api.depends('qualifiers') + def _compute_similar_ids(self): + """error contents having the exactly the same qualifiers""" + for record in self: + if record.qualifiers: + query = SQL( + r"""SELECT id FROM runbot_build_error_content WHERE id != %s AND qualifiers @> %s AND qualifiers <@ %s""", + record.id, + json.dumps(self.qualifiers.dict), + json.dumps(self.qualifiers.dict), + ) + self.env.cr.execute(query) + record.similar_ids = self.env['runbot.build.error.content'].browse([rec[0] for rec in self.env.cr.fetchall()]) + else: + record.similar_ids = False + @api.model def _digest(self, s): """ @@ -565,6 +582,7 @@ class BuildErrorContent(models.Model): self._qualify() + class BuildErrorTag(models.Model): _name = "runbot.build.error.tag" diff --git a/runbot/views/build_error_views.xml b/runbot/views/build_error_views.xml index b6d38776..39d62c48 100644 --- a/runbot/views/build_error_views.xml +++ b/runbot/views/build_error_views.xml @@ -145,6 +145,21 @@ + + + + + + + + + + + +