From b8938a71ca9c81255aec01d155ace676fc059337 Mon Sep 17 00:00:00 2001 From: Xavier-Do Date: Fri, 21 Feb 2025 16:08:23 +0100 Subject: [PATCH] not working wip, todo fix context --- runbot/models/build_error.py | 34 ++++++++++++++++++++++++++---- runbot/views/build_error_views.xml | 2 ++ 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/runbot/models/build_error.py b/runbot/models/build_error.py index f307330c..433ebaa1 100644 --- a/runbot/models/build_error.py +++ b/runbot/models/build_error.py @@ -9,6 +9,7 @@ from dateutil.relativedelta import relativedelta from markupsafe import Markup from werkzeug.urls import url_join from odoo import models, fields, api +from odoo.osv import expression from odoo.exceptions import ValidationError, UserError from odoo.tools import SQL @@ -245,10 +246,7 @@ class BuildError(models.Model): def _onchange_test_tags(self): if self.test_tags and self.version_ids: self.tags_min_version_id = min(self.version_ids, key=lambda rec: rec.number) - self.tags_max_version_id = max(self.version_ids, key=lambda rec: rec.number) - - @api.onchange('customer') - def _onchange_customer(self): + self.tags_max_version_id if not self.responsible: self.responsible = self.customer @@ -322,6 +320,8 @@ class BuildError(models.Model): self.ensure_one() return Markup('%s') % (self._get_form_url(), self.id) + + def action_view_errors(self): return { 'type': 'ir.actions.act_window', @@ -332,6 +332,32 @@ class BuildError(models.Model): 'target': 'current', } + def action_search_similar(self): + domain = [] + available_fields = self.env['runbot.build.error.content']._fields.keys() + for key, value in self.unique_qualifiers.items(): + field = f'x_{key}' + if field not in available_fields: + continue # todo add leaf for json? + leaf = [(field, '=', value)] + if key not in self.common_qualifiers: + domain += expression.OR([leaf, [(field, '=', False)]]) + else: + domain += leaf + + search_context = { + 'search_default_context_filter': True, + 'filter_domain': domain, + } + return { + 'type': 'ir.actions.act_window', + 'views': [(False, 'list'), (False, 'form')], + 'res_model': 'runbot.build.error.content', + 'domain': domain, + 'context': {'active_test': False, **search_context}, + 'target': 'current', + } + def action_view_similary_qualified(self): return { 'type': 'ir.actions.act_window', diff --git a/runbot/views/build_error_views.xml b/runbot/views/build_error_views.xml index a0e66684..5f3bc972 100644 --- a/runbot/views/build_error_views.xml +++ b/runbot/views/build_error_views.xml @@ -8,6 +8,7 @@