diff --git a/runbot/models/build_error.py b/runbot/models/build_error.py index 16f22ed9..ad89c2b0 100644 --- a/runbot/models/build_error.py +++ b/runbot/models/build_error.py @@ -516,6 +516,21 @@ class BuildErrorContent(models.Model): for errors_content_to_merge in to_merge: errors_content_to_merge._merge() + def action_find_duplicates(self): + rg = [r['id_arr'] for r in self.env['runbot.build.error.content'].read_group([], ['id_count:count(id)', 'id_arr:array_agg(id)', 'fingerprint'], ['fingerprint']) if r['id_count'] >1] + duplicate_ids = [] + for ids_lists in rg: + duplicate_ids += ids_lists + + return { + "type": "ir.actions.act_window", + "res_model": "runbot.build.error.content", + "domain": [('id', 'in', duplicate_ids)], + "context": {"create": False, 'group_by': ['fingerprint']}, + "name": "Duplicate Error contents", + 'view_mode': 'tree,form' + } + class BuildErrorTag(models.Model): diff --git a/runbot/views/build_error_views.xml b/runbot/views/build_error_views.xml index 39f0885a..d98ca78f 100644 --- a/runbot/views/build_error_views.xml +++ b/runbot/views/build_error_views.xml @@ -241,6 +241,7 @@ create="false" >
+
@@ -393,7 +394,15 @@ tree,form - + + Find Duplicates + + ir.actions.server + code + + action = model._find_duplicates() + +