[IMP] base_search_mail_content: black, isort, prettier
This commit is contained in:
parent
008e63597b
commit
d7cd6e40eb
@ -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,
|
||||
}
|
||||
|
@ -4,64 +4,60 @@
|
||||
# (<http://www.serpentcs.com>)
|
||||
# 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
|
||||
|
@ -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
|
||||
|
@ -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",
|
||||
)
|
||||
|
Loading…
Reference in New Issue
Block a user