not working wip, todo fix context

This commit is contained in:
Xavier-Do 2025-02-21 16:08:23 +01:00
parent 6fe80265ba
commit b8938a71ca
2 changed files with 32 additions and 4 deletions

View File

@ -9,6 +9,7 @@ from dateutil.relativedelta import relativedelta
from markupsafe import Markup from markupsafe import Markup
from werkzeug.urls import url_join from werkzeug.urls import url_join
from odoo import models, fields, api from odoo import models, fields, api
from odoo.osv import expression
from odoo.exceptions import ValidationError, UserError from odoo.exceptions import ValidationError, UserError
from odoo.tools import SQL from odoo.tools import SQL
@ -245,10 +246,7 @@ class BuildError(models.Model):
def _onchange_test_tags(self): def _onchange_test_tags(self):
if self.test_tags and self.version_ids: if self.test_tags and self.version_ids:
self.tags_min_version_id = min(self.version_ids, key=lambda rec: rec.number) 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) self.tags_max_version_id
@api.onchange('customer')
def _onchange_customer(self):
if not self.responsible: if not self.responsible:
self.responsible = self.customer self.responsible = self.customer
@ -322,6 +320,8 @@ class BuildError(models.Model):
self.ensure_one() self.ensure_one()
return Markup('<a href="%s">%s</a>') % (self._get_form_url(), self.id) return Markup('<a href="%s">%s</a>') % (self._get_form_url(), self.id)
def action_view_errors(self): def action_view_errors(self):
return { return {
'type': 'ir.actions.act_window', 'type': 'ir.actions.act_window',
@ -332,6 +332,32 @@ class BuildError(models.Model):
'target': 'current', '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): def action_view_similary_qualified(self):
return { return {
'type': 'ir.actions.act_window', 'type': 'ir.actions.act_window',

View File

@ -8,6 +8,7 @@
<sheet> <sheet>
<widget name="web_ribbon" title="Test-tags" bg_color="bg-danger" invisible="not test_tags"/> <widget name="web_ribbon" title="Test-tags" bg_color="bg-danger" invisible="not test_tags"/>
<button name="action_view_errors" string="See all linked errors" type="object" class="oe_highlight"/> <button name="action_view_errors" string="See all linked errors" type="object" class="oe_highlight"/>
<button name="action_search_similar" string="Search similar" type="object" class="oe_highlight"/>
<group string="Base info"> <group string="Base info">
<field name="name"/> <field name="name"/>
<field name="error_content_ids" readonly="1"> <field name="error_content_ids" readonly="1">
@ -459,6 +460,7 @@
<filter string="Test Tags" name="test_tagged_errors" domain="[('test_tags', '!=', False)]"/> <filter string="Test Tags" name="test_tagged_errors" domain="[('test_tags', '!=', False)]"/>
<separator/> <separator/>
<filter string="Not seen in one month" name="not_seen_one_month" domain="[('last_seen_date','&lt;', (context_today() - datetime.timedelta(days=30)).strftime('%Y-%m-%d'))]"/> <filter string="Not seen in one month" name="not_seen_one_month" domain="[('last_seen_date','&lt;', (context_today() - datetime.timedelta(days=30)).strftime('%Y-%m-%d'))]"/>
<filter string="Qualifiers" name="context_filter" domain="context.get('filter_domain')" invisible="1"/>
</search> </search>
</field> </field>
</record> </record>