Skip to content

Commit

Permalink
[IMP] advance search for negative expressions
Browse files Browse the repository at this point in the history
  • Loading branch information
serpentcs-dev1 committed Jan 17, 2017
1 parent 26cfb98 commit 088407f
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 6 deletions.
16 changes: 10 additions & 6 deletions base_search_mail_content/models/mail_thread.py
Expand Up @@ -15,16 +15,20 @@ class MailThread(models.AbstractModel):
_inherit = 'mail.thread'

def _search_message_content(self, operator, value):

main_operator = 'in'
if operator in expression.NEGATIVE_TERM_OPERATORS:
main_operator = 'not in'
operators = {'!=': '=', 'not like': 'like',
'not ilike': 'ilike', 'not in': 'in'}
operator = operators[operator]
domain = [('model', '=', self._name), '|', '|', '|', '|',
('record_name', operator, value),
('subject', operator, value), ('body', operator, value),
('email_from', operator, value),
('reply_to', 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'))]
return [('id', main_operator, recs.mapped('res_id'))]

@api.multi
def _compute_message_content(self):
Expand All @@ -33,7 +37,7 @@ def _compute_message_content(self):
return ''

message_content = fields.Text(
string='Messages',
string='Message Content',
help='Message content, to be used only in searches',
compute="_compute_message_content",
search='_search_message_content')
Expand Down Expand Up @@ -62,7 +66,7 @@ def _custom_fields_view_get(self, view_id=None, view_type='form',
})

for node in doc.xpath("//field[1]"):
# Add message_ids in search view
# Add message_content in search view
elem = etree.Element('field', {
'name': 'message_content',
})
Expand Down
12 changes: 12 additions & 0 deletions base_search_mail_content/views/trgm_index_view.xml
Expand Up @@ -9,6 +9,18 @@
<field name="arch" type="xml">
<field name="field_id" position="attributes">
<attribute name="domain">[('ttype', 'in', ['char', 'text', 'html'])]</attribute>
<attribute name="help">"You can either select a field of type 'text', 'char' or 'html'."</attribute>
</field>
</field>
</record>

<record model="ir.ui.view" id="trgm_index_view_tree">
<field name="name">trgm.index.view.tree</field>
<field name="model">trgm.index</field>
<field name="inherit_id" ref="base_search_fuzzy.trgm_index_view_tree"/>
<field name="arch" type="xml">
<field name="field_id" position="attributes">
<attribute name="help">"You can either select a field of type 'text', 'char' or 'html'."</attribute>
</field>
</field>
</record>
Expand Down

0 comments on commit 088407f

Please sign in to comment.