Browse Source
Init commit: worked 8.0 version, which will be changed to 9.0.
Init commit: worked 8.0 version, which will be changed to 9.0.
Changed __openerp__.py and README.rst only.pull/6/head
x620
9 years ago
9 changed files with 182 additions and 0 deletions
-
16res_partner_mails_count/README.rst
-
2res_partner_mails_count/__init__.py
-
33res_partner_mails_count/__openerp__.py
-
19res_partner_mails_count/models.py
-
10res_partner_mails_count/static/src/js/main.js
-
48res_partner_mails_count/templates.xml
-
3res_partner_mails_count/tests/__init__.py
-
33res_partner_mails_count/tests/test_mail.py
-
18res_partner_mails_count/views/res_partner_mails_count.xml
@ -0,0 +1,16 @@ |
|||
Smart buttons for mails count |
|||
============================= |
|||
|
|||
This module adds Smart buttons with "Mails from" and "Mails to" count of mails in the partner form. |
|||
|
|||
Usage |
|||
----- |
|||
|
|||
You can see Smart buttons "Mails from" and "Mails to" in the contact form in the Messaging/Contacts menu. If you click on these buttons, you can see list of corresponded mails. Click on the "Send a message" link to send mail to the partner. |
|||
|
|||
Further information |
|||
------------------- |
|||
|
|||
HTML Description: https://apps.odoo.com/apps/modules/9.0/res_partner_mails_count/ |
|||
|
|||
Tested on Odoo 9.0 |
@ -0,0 +1,2 @@ |
|||
# -*- coding: utf-8 -*- |
|||
import models |
@ -0,0 +1,33 @@ |
|||
# -*- coding: utf-8 -*- |
|||
{ |
|||
"name": "Smart buttons for mails count", |
|||
|
|||
"summary": """ |
|||
This module adds Smart buttons with "Mails from" and "Mails to" count of mails in the partner form. |
|||
""", |
|||
|
|||
"description": """ |
|||
You can see Smart buttons "Mails from" and "Mails to" in the contact |
|||
form in the Messaging/Contacts menu. If you click on these buttons, |
|||
you can see list of corresponded mails. Click on the "Send a message" |
|||
link to send mail to the partner. |
|||
""", |
|||
|
|||
"author": "IT-Projects LLC, Pavel Romanchenko", |
|||
"website": "http://www.it-projects.info", |
|||
|
|||
# Categories can be used to filter modules in modules listing |
|||
# Check https://github.com/odoo/odoo/blob/master/openerp/addons/base/module/module_data.xml |
|||
# for the full list |
|||
"category": "Uncategorized", |
|||
"version": "1.0.0", |
|||
|
|||
# any module necessary for this one to work correctly |
|||
"depends": ["base", "mail"], |
|||
|
|||
# always loaded |
|||
"data": [ |
|||
"views/res_partner_mails_count.xml", |
|||
"templates.xml", |
|||
], |
|||
} |
@ -0,0 +1,19 @@ |
|||
# -*- coding: utf-8 -*- |
|||
|
|||
from openerp import models, fields, api |
|||
|
|||
|
|||
class res_partner(models.Model): |
|||
_inherit = 'res.partner' |
|||
mails_to = fields.Integer(compute="_mails_to") |
|||
mails_from = fields.Integer(compute="_mails_from") |
|||
|
|||
@api.one |
|||
def _mails_to(self): |
|||
for r in self: |
|||
r.mails_to = self.env['mail.message'].sudo().search_count([('notified_partner_ids', 'in', r.id)]) |
|||
|
|||
@api.one |
|||
def _mails_from(self): |
|||
for r in self: |
|||
r.mails_from = self.env['mail.message'].sudo().search_count([('author_id', '=', r.id)]) |
@ -0,0 +1,10 @@ |
|||
openerp.res_partner_mails_count = function(instance){ |
|||
instance.mail.Wall.include({ |
|||
init: function(){ |
|||
this._super.apply(this, arguments); |
|||
if(this.context.ignore_search_model){ |
|||
delete this.defaults.model; |
|||
} |
|||
} |
|||
}); |
|||
}; |
@ -0,0 +1,48 @@ |
|||
<?xml version="1.0"?> |
|||
<openerp> |
|||
<data> |
|||
<template id="res_partner_mails_count_assets_backend" |
|||
name="res_partner_mails_count_assets_backend" |
|||
inherit_id="web.assets_backend"> |
|||
<xpath expr="." position="inside"> |
|||
<script src="/res_partner_mails_count/static/src/js/main.js" |
|||
type="text/javascript"></script> |
|||
</xpath> |
|||
</template> |
|||
|
|||
<record id="search_notified_partner_ids" model="ir.ui.view"> |
|||
<field name="name">mail.message.search.notified_partner</field> |
|||
<field name="model">mail.message</field> |
|||
<field name="priority">50</field> |
|||
<field name="inherit_id" ref="mail.view_message_search"/> |
|||
<field name="arch" type="xml"> |
|||
<search string="Messages Search"> |
|||
<field name="notified_partner_ids"/> |
|||
</search> |
|||
</field> |
|||
</record> |
|||
|
|||
<record id="view_res_partner_mails_count_info_form" model="ir.ui.view"> |
|||
<field name="name">res.partner.mails.count</field> |
|||
<field name="model">res.partner</field> |
|||
<field name="inherit_id" ref="base.view_partner_form"/> |
|||
<field name="priority" eval="50"/> |
|||
<field name="arch" type="xml"> |
|||
<xpath expr="//div[@name='buttons']" position="inside"> |
|||
<button class="oe_inline oe_stat_button" type="action" |
|||
name="%(action_mails)d" |
|||
context="{'search_default_notified_partner_ids': [active_id], 'default_model': 'res.partner', 'default_res_id': active_id}" |
|||
icon="fa-envelope"> |
|||
<field string="Mails to" name="mails_to" widget="statinfo"/> |
|||
</button> |
|||
<button class="oe_inline oe_stat_button" type="action" |
|||
name="%(action_mails)d" |
|||
context="{'search_default_author_id': active_id, 'default_model': 'res.partner', 'default_res_id': active_id}" |
|||
icon="fa-envelope-o"> |
|||
<field string="Mails from" name="mails_from" widget="statinfo"/> |
|||
</button> |
|||
</xpath> |
|||
</field> |
|||
</record> |
|||
</data> |
|||
</openerp> |
@ -0,0 +1,3 @@ |
|||
# -*- coding: utf-8 -*- |
|||
|
|||
from . import test_mail |
@ -0,0 +1,33 @@ |
|||
# -*- coding: utf-8 -*- |
|||
|
|||
from openerp.tests.common import TransactionCase |
|||
|
|||
|
|||
class test_message_count(TransactionCase): |
|||
post_install = True |
|||
def test_count(self): |
|||
new_partner1 = self.env['res.partner'].sudo().create({'name': 'rpmc Test Partner one', 'email': 'tt@tt', 'notify_email': 'always'}) |
|||
new_partner2 = self.env['res.partner'].sudo().create({'name': 'rpmc Test Partner two', 'email': 'rr@rr', 'notify_email': 'always'}) |
|||
self.assertEqual(new_partner1.mails_to, 0, 'rpmc: new partner have mails_to != 0') |
|||
mail_compose = self.env['mail.compose.message'] |
|||
compose = mail_compose.with_context( |
|||
{ |
|||
'default_composition_mode': 'comment', |
|||
}).create( |
|||
{ |
|||
'subject': 'test subj', |
|||
'body': 'test body', |
|||
'partner_ids': [(4, new_partner2.id)], |
|||
'email_from': 'tt@tt', |
|||
'author_id': new_partner1.id |
|||
}) |
|||
compose.send_mail() |
|||
self.assertEqual(new_partner1.mails_to, 0) |
|||
self.assertEqual(new_partner1.mails_from, 1, 'rpmc: one message but mails_from != 1') |
|||
self.assertEqual(new_partner2.mails_to, 1, 'rpmc: one message but mails_to != 1') |
|||
self.assertEqual(new_partner2.mails_from, 0) |
|||
compose.send_mail() |
|||
self.assertEqual(new_partner1.mails_to, 0) |
|||
self.assertEqual(new_partner1.mails_from, 2, 'rpmc: one message but mails_from != 2') |
|||
self.assertEqual(new_partner2.mails_to, 2, 'rpmc: one message but mails_to != 2') |
|||
self.assertEqual(new_partner2.mails_from, 0) |
@ -0,0 +1,18 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<openerp> |
|||
<data> |
|||
<record id="action_mails" model="ir.actions.client"> |
|||
<field name="name">Mails</field> |
|||
<field name="tag">mail.wall</field> |
|||
<field name="res_model">mail.message</field> |
|||
<field name="context">{ |
|||
'ignore_search_model': True, |
|||
}</field> |
|||
<field name="help" type="html"> |
|||
<p> |
|||
Mails not found. Probably, they exist, but you don't have access. |
|||
</p> |
|||
</field> |
|||
</record> |
|||
</data> |
|||
</openerp> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue