[ADD] renamed module to base_search_mail_content

This commit is contained in:
darshan-serpent 2017-01-10 14:50:26 +05:30 committed by Eduardo De Miguel
parent 3a5502655c
commit 66014fdfb2
7 changed files with 228 additions and 0 deletions

View File

@ -0,0 +1,83 @@
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
========================
Mail message name search
========================
This module adds the capability to search for mail messages by subject or
body of the message. This will be useful in models that make intense use of
messages, like project issues or helpdesk tickets.
This module will add dynamically the message_ids to the search view of
any model that inherits from the mail.thread and will incorporate the
capability to search for content in the mail messages.
Installation
============
This module depends on the module 'base_search_fuzzy' to ensure that
searches on emails are based on indexes. Please read carefully the install
instructions https://github.com/OCA/server-tools/blob/9.0/base_search_fuzzy/README.rst
This module installs by default the indexes that are required to
perform the searches on mail messages.
Configuration
=============
No configuration is needed.
Usage
=====
A project issue or helpdesk ticket can contain tens of mails associated,
based on the conversations that the person responsible for the ticket
maintains with the person that raised the issue. One need to search
in mail messages, as much as he/she needs to search in their mail for
past conversations. So this module will be useful for the user to search
messages by subject or body.
.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
:alt: Try me on Runbot
:target: https://runbot.odoo-community.org/runbot/server-tools/9.0
Bug Tracker
===========
Bugs are tracked on `GitHub Issues
<https://github.com/OCA/social/issues>`_. In case of trouble, please
check there if your issue has already been reported. If you spotted it first,
help us smashing it by providing a detailed and welcomed feedback.
Credits
=======
Images
------
* Odoo Community Association: `Icon <https://github.com/OCA/maintainer-tools/blob/master/template/module/static/description/icon.svg>`_.
Contributors
------------
* Jordi Ballester Alomar <jordi.ballester@eficent.com>
* Serpent Consulting Services Pvt. Ltd. <support@serpentcs.com>
Maintainer
----------
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
This module is maintained by the OCA.
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
To contribute to this module, please visit https://odoo-community.org.

View File

@ -0,0 +1,7 @@
# -*- coding: utf-8 -*-
# © 2016 Eficent Business and IT Consulting Services S.L.
# (http://www.eficent.com)
# © 2016 Serpent Consulting Services Pvt. Ltd. (<http://www.serpentcs.com>)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from . import models

View File

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# © 2016 Eficent Business and IT Consulting Services S.L.
# (http://www.eficent.com)
# © 2016 Serpent Consulting Services Pvt. Ltd. (<http://www.serpentcs.com>)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
{
"name": "Mail message name search",
"version": "9.0.1.0.0",
"author": "Eficent,"
"SerpentCS,"
"Odoo Community Association (OCA)",
"website": "http://www.eficent.com",
"category": "Social",
"data": ["data/trgm_index_data.xml"],
"depends": ["mail",
"base_search_fuzzy"],
"license": "AGPL-3",
'installable': True,
}

View File

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="1">
<record id="subject_gin_idx" model="trgm.index">
<field name="index_type">gin</field>
<field name="field_id"
search="[('model','=','mail.message'),('name','=','subject')]"/>
</record>
<record id="body_gin_idx" model="trgm.index">
<field name="index_type">gin</field>
<field name="field_id"
search="[('model','=','mail.message'),('name','=','body')]"/>
</record>
<record id="record_name_gin_idx" model="trgm.index">
<field name="index_type">gin</field>
<field name="field_id"
search="[('model','=','mail.message'),('name','=','record_name')]"/>
</record>
</data>
</openerp>

View File

@ -0,0 +1,8 @@
# -*- coding: utf-8 -*-
# © 2016 Eficent Business and IT Consulting Services S.L.
# (http://www.eficent.com)
# © 2016 Serpent Consulting Services Pvt. Ltd. (<http://www.serpentcs.com>)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from . import mail_thread
from . import res_partner

View File

@ -0,0 +1,73 @@
# -*- coding: utf-8 -*-
# © 2016 Eficent Business and IT Consulting Services S.L.
# (http://www.eficent.com)
# © 2016 Serpent Consulting Services Pvt. Ltd. (<http://www.serpentcs.com>)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from openerp import api, fields, models
from lxml import etree
from openerp.osv import expression
from openerp.osv.orm import setup_modifiers
class MailThread(models.AbstractModel):
_inherit = 'mail.thread'
def _search_message_content(self, operator, value):
domain = [('model', '=', self._name), '|', '|',
('record_name', operator, value),
('subject', operator, value), ('body', operator, value)]
if operator in expression.NEGATIVE_TERM_OPERATORS:
domain = domain[2:]
recs = self.env['mail.message'].search(domain)
return [('id', 'in', recs.mapped('res_id'))]
@api.multi
def _compute_message_content(self):
""" We don't really need to show any content. This field is to be
used only by searches"""
return ''
message_content = fields.Text(
string='Messages',
help='Message content, to be used only in searches',
compute="_compute_message_content",
search='_search_message_content')
_base_fields_view_get = models.BaseModel.fields_view_get
@api.model
def _custom_fields_view_get(self, view_id=None, view_type='form',
toolbar=False, submenu=False):
"""
Override to add message_ids field in all the objects
that inherits mail.thread
"""
# Tricky super call
res = _base_fields_view_get(self, 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[1]"):
# Add message_ids in search view
elem = etree.Element('field', {
'name': 'message_content',
})
setup_modifiers(elem)
node.addnext(elem)
res['arch'] = etree.tostring(doc)
return res
models.BaseModel.fields_view_get = _custom_fields_view_get

View File

@ -0,0 +1,13 @@
# -*- coding: utf-8 -*-
# © 2016 Eficent Business and IT Consulting Services S.L.
# (http://www.eficent.com)
# © 2016 Serpent Consulting Services Pvt. Ltd. (<http://www.serpentcs.com>)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from openerp import models
class Partner(models.Model):
_name = 'res.partner'
_inherit = ['res.partner', 'mail.thread']