Browse Source

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
parent
commit
bac088a50a
  1. 16
      res_partner_mails_count/README.rst
  2. 2
      res_partner_mails_count/__init__.py
  3. 33
      res_partner_mails_count/__openerp__.py
  4. 19
      res_partner_mails_count/models.py
  5. 10
      res_partner_mails_count/static/src/js/main.js
  6. 48
      res_partner_mails_count/templates.xml
  7. 3
      res_partner_mails_count/tests/__init__.py
  8. 33
      res_partner_mails_count/tests/test_mail.py
  9. 18
      res_partner_mails_count/views/res_partner_mails_count.xml

16
res_partner_mails_count/README.rst

@ -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

2
res_partner_mails_count/__init__.py

@ -0,0 +1,2 @@
# -*- coding: utf-8 -*-
import models

33
res_partner_mails_count/__openerp__.py

@ -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",
],
}

19
res_partner_mails_count/models.py

@ -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)])

10
res_partner_mails_count/static/src/js/main.js

@ -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;
}
}
});
};

48
res_partner_mails_count/templates.xml

@ -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>

3
res_partner_mails_count/tests/__init__.py

@ -0,0 +1,3 @@
# -*- coding: utf-8 -*-
from . import test_mail

33
res_partner_mails_count/tests/test_mail.py

@ -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)

18
res_partner_mails_count/views/res_partner_mails_count.xml

@ -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>
Loading…
Cancel
Save