diff --git a/base_search_mail_content/__manifest__.py b/base_search_mail_content/__manifest__.py index b68109c..48699dc 100644 --- a/base_search_mail_content/__manifest__.py +++ b/base_search_mail_content/__manifest__.py @@ -7,16 +7,11 @@ { "name": "Base Search Mail Content", "version": "12.0.1.0.0", - "author": "Eficent," - "SerpentCS," - "Tecnativa," - "Odoo Community Association (OCA)", + "author": "Eficent," "SerpentCS," "Tecnativa," "Odoo Community Association (OCA)", "website": "https://github.com/OCA/social", "category": "Social", - "data": [ - "data/trgm_index_data.xml", - ], + "data": ["data/trgm_index_data.xml"], "depends": ["mail", "base_search_fuzzy"], "license": "AGPL-3", - 'installable': True, + "installable": True, } diff --git a/base_search_mail_content/models/mail_thread.py b/base_search_mail_content/models/mail_thread.py index a58c6fe..b6c2704 100644 --- a/base_search_mail_content/models/mail_thread.py +++ b/base_search_mail_content/models/mail_thread.py @@ -4,64 +4,60 @@ # () # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). -from odoo import _, api, fields, models from lxml import etree + +from odoo import _, api, fields, models from odoo.osv import expression from odoo.osv.orm import setup_modifiers class MailThread(models.AbstractModel): - _inherit = 'mail.thread' + _inherit = "mail.thread" def _search_message_content(self, operator, value): - model_domain = [('model', '=', self._name)] + model_domain = [("model", "=", self._name)] if operator not in expression.NEGATIVE_TERM_OPERATORS: model_domain += ["|"] * 4 model_domain += [ - ('record_name', operator, value), - ('subject', operator, value), - ('body', operator, value), - ('email_from', operator, value), - ('reply_to', operator, value) + ("record_name", operator, value), + ("subject", operator, value), + ("body", operator, value), + ("email_from", operator, value), + ("reply_to", operator, value), ] - recs = self.env['mail.message'].search(model_domain) - return [('id', 'in', recs.mapped('res_id'))] + recs = self.env["mail.message"].search(model_domain) + return [("id", "in", recs.mapped("res_id"))] message_content = fields.Text( - string='Message Content', - help='Message content, to be used only in searches', + string="Message Content", + help="Message content, to be used only in searches", compute=lambda self: False, - search='_search_message_content') + search="_search_message_content", + ) @api.model - def fields_view_get(self, view_id=None, view_type='form', toolbar=False, - submenu=False): + def fields_view_get( + self, view_id=None, view_type="form", toolbar=False, submenu=False + ): """ Override to add message_content field in all the objects that inherits mail.thread """ res = super(MailThread, self).fields_view_get( - view_id=view_id, view_type=view_type, toolbar=toolbar, - submenu=submenu) - if view_type == 'search' and self._fields.get('message_content'): - doc = etree.XML(res['arch']) - res['fields'].update({ - 'message_content': { - 'type': 'char', - 'string': _('Message Content'), - } - }) + view_id=view_id, view_type=view_type, toolbar=toolbar, submenu=submenu + ) + if view_type == "search" and self._fields.get("message_content"): + doc = etree.XML(res["arch"]) + res["fields"].update( + {"message_content": {"type": "char", "string": _("Message Content")}} + ) for node in doc.xpath("//field[last()]"): # Add message_content in search view - elem = etree.Element( - 'field', - { - 'name': 'message_content', - }) + elem = etree.Element("field", {"name": "message_content"}) setup_modifiers(elem) node.addnext(elem) - res['arch'] = etree.tostring(doc) + res["arch"] = etree.tostring(doc) return res diff --git a/base_search_mail_content/models/trgm_index.py b/base_search_mail_content/models/trgm_index.py index 34c59a0..960fdb4 100644 --- a/base_search_mail_content/models/trgm_index.py +++ b/base_search_mail_content/models/trgm_index.py @@ -8,7 +8,7 @@ from odoo import fields, models class TrgmIndex(models.Model): - _inherit = 'trgm.index' + _inherit = "trgm.index" # We take advantage of field inheritance to redefine help instead of do # inheritance in views that throws an error diff --git a/base_search_mail_content/tests/test_base_search_mail_content.py b/base_search_mail_content/tests/test_base_search_mail_content.py index dae84f2..b10aeab 100644 --- a/base_search_mail_content/tests/test_base_search_mail_content.py +++ b/base_search_mail_content/tests/test_base_search_mail_content.py @@ -10,15 +10,16 @@ class TestBaseSearchMailContent(TransactionCase): self.channel_obj = self.env["mail.channel"] def test_base_search_mail_content_1(self): - res = self.channel_obj.search( - [('message_content', 'ilike', 'xxxyyyzzz')]) + res = self.channel_obj.search([("message_content", "ilike", "xxxyyyzzz")]) self.assertFalse(res, "You have a channel with xxxyyyzzz :O") def test_base_search_mail_content_2(self): res = self.channel_obj.load_views( - [[False, 'search']], {'load_fields': False, - 'load_filters': True, - 'toolbar': True}) + [[False, "search"]], + {"load_fields": False, "load_filters": True, "toolbar": True}, + ) self.assertIn( - 'message_content', res['fields_views']['search']['fields'], - "message_content field was not detected") + "message_content", + res["fields_views"]["search"]["fields"], + "message_content field was not detected", + )