2018-06-11 18:12:03 +02:00
|
|
|
# Copyright 2016-17 Eficent Business and IT Consulting Services S.L.
|
2017-01-10 10:20:26 +01:00
|
|
|
# (http://www.eficent.com)
|
2018-06-11 18:12:03 +02:00
|
|
|
# Copyright 2016 Serpent Consulting Services Pvt. Ltd.
|
|
|
|
# (<http://www.serpentcs.com>)
|
2017-01-10 10:20:26 +01:00
|
|
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
|
|
|
|
2018-06-11 18:12:03 +02:00
|
|
|
from odoo import _, api, fields, models
|
2017-01-10 10:20:26 +01:00
|
|
|
from lxml import etree
|
2017-07-10 13:28:35 +02:00
|
|
|
from odoo.osv import expression
|
|
|
|
from odoo.osv.orm import setup_modifiers
|
2017-01-10 10:20:26 +01:00
|
|
|
|
|
|
|
|
|
|
|
class MailThread(models.AbstractModel):
|
|
|
|
|
|
|
|
_inherit = 'mail.thread'
|
|
|
|
|
|
|
|
def _search_message_content(self, operator, value):
|
2017-01-17 07:56:51 +01:00
|
|
|
|
2017-07-10 13:28:35 +02:00
|
|
|
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)
|
|
|
|
]
|
|
|
|
recs = self.env['mail.message'].search(model_domain)
|
|
|
|
return [('id', 'in', recs.mapped('res_id'))]
|
2017-01-10 10:20:26 +01:00
|
|
|
|
|
|
|
message_content = fields.Text(
|
2017-01-17 07:56:51 +01:00
|
|
|
string='Message Content',
|
2017-01-10 10:20:26 +01:00
|
|
|
help='Message content, to be used only in searches',
|
2017-07-10 13:28:35 +02:00
|
|
|
compute=lambda self: False,
|
2017-01-10 10:20:26 +01:00
|
|
|
search='_search_message_content')
|
|
|
|
|
2017-07-10 13:28:35 +02:00
|
|
|
@api.model
|
|
|
|
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',
|
2018-06-11 18:12:03 +02:00
|
|
|
'string': _('Message Content'),
|
2017-07-10 13:28:35 +02:00
|
|
|
}
|
2017-01-10 10:20:26 +01:00
|
|
|
})
|
|
|
|
|
2017-07-10 13:28:35 +02:00
|
|
|
for node in doc.xpath("//field[1]"):
|
|
|
|
# Add message_content in search view
|
|
|
|
elem = etree.Element(
|
|
|
|
'field',
|
|
|
|
{
|
|
|
|
'name': 'message_content',
|
|
|
|
})
|
|
|
|
setup_modifiers(elem)
|
|
|
|
node.addnext(elem)
|
|
|
|
res['arch'] = etree.tostring(doc)
|
|
|
|
return res
|