Browse Source

Merge pull request #49 from yelizariev/9.0-merge-91b95cd

9.0 merge 91b95cd
pull/55/head
Ivan Yelizariev 8 years ago
committed by GitHub
parent
commit
c87c7bbeb4
  1. 34
      .travis.yml
  2. 4
      mail_all/README.rst
  3. 2
      mail_all/tests/test_js.py
  4. 2
      mail_archives/tests/test_js.py
  5. 2
      mail_check_immediately/__init__.py
  6. 11
      mail_check_immediately/__openerp__.py
  7. 1
      mail_check_immediately/models.py
  8. 10
      mail_check_immediately/static/src/js/main.js
  9. 13
      mail_delete_odoo_footer/__openerp__.py
  10. 3
      mail_fix_553/__init__.py
  11. 11
      mail_fix_553/__openerp__.py
  12. 13
      mail_fix_553/mail_fix_553.py
  13. 3
      mail_fix_empty_body/__init__.py
  14. 13
      mail_fix_empty_body/__openerp__.py
  15. 5
      mail_fix_empty_body/models.py
  16. 3
      mail_fix_header_from/__init__.py
  17. 11
      mail_fix_header_from/__openerp__.py
  18. 1
      mail_fix_header_from/models.py
  19. 5
      mail_move_message/__init__.py
  20. 15
      mail_move_message/__openerp__.py
  21. 3
      mail_move_message/controllers/__init__.py
  22. 6
      mail_move_message/controllers/main.py
  23. 13
      mail_move_message/mail_move_message_models.py
  24. 8
      mail_move_message/static/src/js/mail_move_message.js
  25. 3
      mail_outgoing/__init__.py
  26. 13
      mail_outgoing/__openerp__.py
  27. 5
      mail_outgoing/mail_outgoing_models.py
  28. 3
      mail_partner_lang/__init__.py
  29. 13
      mail_partner_lang/__openerp__.py
  30. 7
      mail_partner_lang/models.py
  31. 6
      mail_recovery/README.rst
  32. 6
      mail_recovery/static/src/js/mail_recovery.js
  33. 3
      mail_sent/__init__.py
  34. 2
      mail_sent/tests/test_js.py
  35. 2
      mail_todo_custom/static/src/js/mail_todo_custom.js
  36. 1
      mailgun/models.py
  37. 3
      mass_mailing_extra/__init__.py
  38. 13
      mass_mailing_extra/__openerp__.py
  39. 9
      mass_mailing_extra/models.py
  40. 4
      oca_dependencies.txt
  41. 2
      res_partner_mails_count/__init__.py
  42. 3
      res_partner_mails_count/tests/test_mail.py
  43. 5
      res_partner_mails_count/tests/test_phantom.py
  44. 2
      res_partner_strip_email/__init__.py
  45. 3
      res_partner_strip_email/models.py

34
.travis.yml

@ -0,0 +1,34 @@
language: python
python:
- "2.7"
sudo: false
cache: pip
addons:
apt:
packages:
- expect-dev # provides unbuffer utility
- python-lxml # because pip installation is slow
env:
- VERSION="9.0" LINT_CHECK="1"
- VERSION="9.0" ODOO_REPO="odoo/odoo" LINT_CHECK="0"
- VERSION="9.0" ODOO_REPO="OCA/OCB" LINT_CHECK="0"
- VERSION="9.0" UNIT_TEST="1" LINT_CHECK="0"
virtualenv:
system_site_packages: true
install:
- pip install anybox.testing.openerp
- git clone https://github.com/it-projects-llc/maintainer-quality-tools.git ${HOME}/maintainer-quality-tools
- export PATH=${HOME}/maintainer-quality-tools/travis:${PATH}
- travis_install_nightly
script:
- travis_run_tests
after_success:
coveralls

4
mail_all/README.rst

@ -9,8 +9,8 @@ Further information
HTML Description: https://apps.odoo.com/apps/modules/9.0/mail_all/
Usage instructions: `<doc/index.rst>`_
Usage instructions: `<doc/index.rst>`__
Changelog: `<doc/changelog.rst>`_
Changelog: `<doc/changelog.rst>`__
Tested on Odoo 9.0 d3dd4161ad0598ebaa659fbd083457c77aa9448d

2
mail_all/tests/test_js.py

@ -1,8 +1,10 @@
import openerp.tests
@openerp.tests.common.at_install(False)
@openerp.tests.common.post_install(True)
class TestUi(openerp.tests.HttpCase):
def test_01_mail_all(self):
# wait till page loaded and then click and wait again
code = """

2
mail_archives/tests/test_js.py

@ -1,8 +1,10 @@
import openerp.tests
@openerp.tests.common.at_install(False)
@openerp.tests.common.post_install(True)
class TestUi(openerp.tests.HttpCase):
def test_01_mail_archives(self):
# wait till page loaded and then click and wait again
code = """

2
mail_check_immediately/__init__.py

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

11
mail_check_immediately/__openerp__.py

@ -1,13 +1,14 @@
# -*- coding: utf-8 -*-
{
'name' : 'Check mail immediately',
'version' : '1.0.1',
'author' : 'IT-Projects LLC, Ivan Yelizariev',
'name': 'Check mail immediately',
'version': '1.0.1',
'author': 'IT-Projects LLC, Ivan Yelizariev',
'license': 'LGPL-3',
"category": "Discuss",
'website' : 'https://twitter.com/yelizariev',
'website': 'https://twitter.com/yelizariev',
'price': 9.00,
'currency': 'EUR',
'depends' : ['base', 'web', 'fetchmail', 'mail'],
'depends': ['base', 'web', 'fetchmail', 'mail'],
'data': [
'views.xml',
],

1
mail_check_immediately/models.py

@ -60,7 +60,6 @@ class FetchMailImmediately(models.AbstractModel):
def run_fetchmail_manually(self):
fetchmail_task = self.env.ref('fetchmail.ir_cron_mail_gateway_action')
fetchmail_task_id = fetchmail_task.id
fetchmail_model = self.env['fetchmail.server'].sudo()
fetchmail_task._try_lock()

10
mail_check_immediately/static/src/js/main.js

@ -10,7 +10,7 @@ openerp.mail_check_immediately = function(instance, local) {
this.imm_model = new instance.web.Model('fetch_mail.imm');
this.events['click a.oe_fetch_new_mails'] = function(){
_this.run_fetchmail_manually();
}
};
},
start: function() {
@ -22,7 +22,7 @@ openerp.mail_check_immediately = function(instance, local) {
this.get_last_fetched_time();
this.get_time_loop = setInterval(function(){
_this.get_last_fetched_time()
_this.get_last_fetched_time();
}, 30000);
},
@ -31,8 +31,8 @@ openerp.mail_check_immediately = function(instance, local) {
var _this = this;
this.imm_model.call('run_fetchmail_manually', {context: new instance.web.CompoundContext()}).then(function(){
_this.get_last_fetched_time()
})
_this.get_last_fetched_time();
});
},
get_last_fetched_time: function(){
@ -43,7 +43,7 @@ openerp.mail_check_immediately = function(instance, local) {
value = $.timeago(res);
value = value || 'undefined';
_this.$el.find('span.oe_view_manager_fetch_mail_imm_field').html(value);
})
});
},
destroy: function(){

13
mail_delete_odoo_footer/__openerp__.py

@ -1,12 +1,13 @@
# -*- coding: utf-8 -*-
{
'name' : 'Delete Odoo footer in email (TODO)',
'version' : '1.0.0',
'author' : 'IT-Projects LLC, Ivan Yelizariev',
'name': 'Delete Odoo footer in email (TODO)',
'version': '1.0.0',
'author': 'IT-Projects LLC, Ivan Yelizariev',
'license': 'LGPL-3',
"category": "Discuss",
'website' : 'https://yelizariev.github.io',
'depends' : [],
'data':[
'website': 'https://yelizariev.github.io',
'depends': [],
'data': [
],
'installable': False
}

3
mail_fix_553/__init__.py

@ -1 +1,2 @@
import mail_fix_553
# -*- coding: utf-8 -*-
from . import mail_fix_553

11
mail_fix_553/__openerp__.py

@ -1,11 +1,12 @@
# -*- coding: utf-8 -*-
{
"name" : "Fix mail error 553",
"version" : "0.3",
"author" : "IT-Projects LLC, Ivan Yelizariev",
"name": "Fix mail error 553",
"version": "0.3",
"author": "IT-Projects LLC, Ivan Yelizariev",
'license': 'LGPL-3',
"category": "Discuss",
"website" : "https://yelizariev.github.io",
"depends" : ["base", "mail"],
"website": "https://yelizariev.github.io",
"depends": ["base", "mail"],
"data": ["data.xml"],
'installable': False
}

13
mail_fix_553/mail_fix_553.py

@ -2,19 +2,19 @@
import base64
import logging
import re
from email.utils import formataddr
from urlparse import urljoin
from openerp import api, tools
from openerp import tools
from openerp import SUPERUSER_ID
from openerp.addons.base.ir.ir_mail_server import MailDeliveryException
from openerp.osv import fields, osv
from openerp.osv import osv
from openerp.tools.safe_eval import safe_eval as eval
from openerp.tools.translate import _
_logger = logging.getLogger(__name__)
import re
class mail_mail(osv.Model):
_inherit = "mail.mail"
@ -41,10 +41,9 @@ class mail_mail(osv.Model):
catchall_alias_name = self.pool['ir.config_parameter'].get_param(cr, uid, "mail.catchall.name_alias_from", context=context)
catchall_domain = self.pool['ir.config_parameter'].get_param(cr, uid, "mail.catchall.domain", context=context)
correct_email_from = '@%s>?\s*$'%catchall_domain
correct_email_from = '@%s>?\s*$' % catchall_domain
default_email_from = '%s@%s' % (catchall_alias, catchall_domain)
context = dict(context or {})
ir_mail_server = self.pool.get('ir.mail_server')
ir_attachment = self.pool['ir.attachment']
@ -146,7 +145,7 @@ class mail_mail(osv.Model):
except MemoryError:
# prevent catching transient MemoryErrors, bubble up to notify user or abort cron job
# instead of marking the mail as failed
_logger.exception('MemoryError while processing mail with ID %r and Msg-Id %r. '\
_logger.exception('MemoryError while processing mail with ID %r and Msg-Id %r. '
'Consider raising the --limit-memory-hard startup option',
mail.id, mail.message_id)
raise

3
mail_fix_empty_body/__init__.py

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

13
mail_fix_empty_body/__openerp__.py

@ -1,14 +1,15 @@
# -*- coding: utf-8 -*-
{
'name' : 'Fix "False" in empty email body',
'version' : '1.0.0',
'author' : 'IT-Projects LLC, Ivan Yelizariev',
'name': 'Fix "False" in empty email body',
'version': '1.0.0',
'author': 'IT-Projects LLC, Ivan Yelizariev',
'license': 'LGPL-3',
"category": "Discuss",
'website' : 'https://twitter.com/yelizariev',
'website': 'https://twitter.com/yelizariev',
'price': 9.00,
'currency': 'EUR',
'depends' : ['mail'],
'data':[
'depends': ['mail'],
'data': [
],
'installable': False
}

5
mail_fix_empty_body/models.py

@ -1,4 +1,7 @@
from openerp import api, models, fields, SUPERUSER_ID
# -*- coding: utf-8 -*-
from openerp import models
class mail_compose_message(models.TransientModel):
_inherit = 'mail.compose.message'

3
mail_fix_header_from/__init__.py

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

11
mail_fix_header_from/__openerp__.py

@ -1,14 +1,15 @@
# -*- coding: utf-8 -*-
{
"name" : "Fix non-ascii header 'from' (OBSOLETE)",
"version" : "0.3",
"author" : "IT-Projects LLC, Ivan Yelizariev",
"name": "Fix non-ascii header 'from' (OBSOLETE)",
"version": "0.3",
"author": "IT-Projects LLC, Ivan Yelizariev",
'license': 'LGPL-3',
"category": "Discuss",
"website" : "https://yelizariev.github.io",
"website": "https://yelizariev.github.io",
"description": """
Obsolete in odoo 8.0 since Sep 10, 2014 https://github.com/odoo/odoo/commit/f2cf6ced17d3477b8858e3a8f955a42cc8a629ff . You can install this module, if you use older version.
""",
"depends" : ["base"],
"depends": ["base"],
#"init_xml" : [],
#"update_xml" : [],
#"active": True,

1
mail_fix_header_from/models.py

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
import re
from openerp.addons.base.ir import ir_mail_server

5
mail_move_message/__init__.py

@ -1,2 +1,3 @@
import controllers
import mail_move_message_models
# -*- coding: utf-8 -*-
from . import controllers
from . import mail_move_message_models

15
mail_move_message/__openerp__.py

@ -1,15 +1,16 @@
# -*- coding: utf-8 -*-
{
'name' : 'Mail relocation',
'version' : '1.0.4',
'author' : 'IT-Projects LLC, Ivan Yelizariev, Pavel Romanchenko',
'name': 'Mail relocation',
'version': '1.0.4',
'author': 'IT-Projects LLC, Ivan Yelizariev, Pavel Romanchenko',
'license': 'LGPL-3',
'category' : 'Discuss',
'website' : 'https://twitter.com/yelizariev',
'category': 'Discuss',
'website': 'https://twitter.com/yelizariev',
'price': 100.00,
'currency': 'EUR',
'depends' : ['mail_all', 'web_polymorphic_field'],
'depends': ['mail_all', 'web_polymorphic_field'],
'images': ['images/inbox.png'],
'data':[
'data': [
'mail_move_message_views.xml',
'data/mail_move_message_data.xml',
],

3
mail_move_message/controllers/__init__.py

@ -1 +1,2 @@
import main
# -*- coding: utf-8 -*-
from . import main

6
mail_move_message/controllers/main.py

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
from openerp.addons.web.controllers.main import DataSet
from openerp.tools.translate import _
from openerp import http
@ -9,6 +10,7 @@ class MailChatController(openerp.addons.bus.controllers.main.BusController):
# -----------------------------
# Extends BUS Controller Poll
# -----------------------------
def _poll(self, dbname, channels, last, options):
if request.session.uid:
registry, cr, uid, context = request.registry, request.cr, request.session.uid, request.context
@ -17,6 +19,7 @@ class MailChatController(openerp.addons.bus.controllers.main.BusController):
return super(MailChatController, self)._poll(dbname, channels, last, options)
class DataSetCustom(DataSet):
def _extend_name(self, model, records):
@ -40,12 +43,11 @@ class DataSetCustom(DataSet):
res.append((r[0], _('%s ID %s') % (r[1], r[0])))
return res
@http.route('/web/dataset/call_kw/<model>/name_search', type='json', auth="user")
def name_search(self, model, method, args, kwargs):
context = kwargs.get('context')
if context and context.get('extended_name_with_contact'):
#add order by ID desc
# add order by ID desc
cr, uid = request.cr, request.uid
Model = request.registry[model]
search_args = list(kwargs.get('args') or [])

13
mail_move_message/mail_move_message_models.py

@ -1,8 +1,9 @@
from lxml import etree
# -*- coding: utf-8 -*-
from openerp import api, models, fields, SUPERUSER_ID
from openerp.tools import email_split
from openerp.tools.translate import _
class wizard(models.TransientModel):
_name = 'mail_move_message.wizard'
@ -34,7 +35,7 @@ class wizard(models.TransientModel):
if 'message_id' in res:
message = self.env['mail.message'].browse(res['message_id'])
email_from = message.email_from
parts = email_split(email_from.replace(' ',','))
parts = email_split(email_from.replace(' ', ','))
if parts:
email = parts[0]
name = email_from.find(email) != -1 and email_from[:email_from.index(email)].replace('"', '').replace('<', '').strip() or email_from
@ -140,7 +141,7 @@ class wizard(models.TransientModel):
operation = 'write'
context = self._context
if not ( self.model and self.res_id ):
if not (self.model and self.res_id):
return True
model_obj = self.pool[self.model]
mids = model_obj.exists(cr, uid, [self.res_id])
@ -170,8 +171,8 @@ class wizard(models.TransientModel):
r.check_access()
if not r.parent_id or not (r.parent_id.model == r.model and
r.parent_id.res_id == r.res_id):
#link with the first message of record
parent = self.env['mail.message'].search([('model','=',r.model), ('res_id','=',r.res_id)], order='id', limit=1)
# link with the first message of record
parent = self.env['mail.message'].search([('model', '=', r.model), ('res_id', '=', r.res_id)], order='id', limit=1)
r.parent_id = parent.id or None
r.message_id.move(r.parent_id.id, r.res_id, r.model, r.move_back, r.move_followers)
@ -333,7 +334,7 @@ class mail_message(models.Model):
return []
if isinstance(ids, (long, int)):
ids = [ids]
reads = self.read(cr, uid, ids, ['record_name','model', 'res_id'], context=context)
reads = self.read(cr, uid, ids, ['record_name', 'model', 'res_id'], context=context)
res = []
for record in reads:
name = record['record_name'] or ''

8
mail_move_message/static/src/js/mail_move_message.js

@ -96,7 +96,7 @@ odoo.define('mail_move_message.relocate', function (require) {
on_click: function(){
if(this.node.attrs.special == 'quick_create'){
var self = this;
var related_field = this.field_manager.fields[this.node.attrs['field']];
var related_field = this.field_manager.fields[this.node.attrs.field];
var context_built = $.Deferred();
if(this.node.attrs.use_for_mail_move_message) {
var model = new Model(this.view.dataset.model);
@ -116,7 +116,7 @@ odoo.define('mail_move_message.relocate', function (require) {
}
$.when(context_built).pipe(function (context) {
if(self.node.attrs.use_for_mail_move_message) {
self.field_manager.fields['partner_id'].set_value(context['partner_id']);
self.field_manager.fields.partner_id.set_value(context.partner_id);
}
var dialog = new form_common.FormViewDialog(self, {
res_model: related_field.field.relation,
@ -130,8 +130,8 @@ odoo.define('mail_move_message.relocate', function (require) {
});
dialog.on('create_completed', self, function(id) {
related_field.set_value(id);
if(self.field_manager.fields['filter_by_partner']) {
self.field_manager.fields['filter_by_partner'].set_value(true);
if(self.field_manager.fields.filter_by_partner) {
self.field_manager.fields.filter_by_partner.set_value(true);
}
});
});

3
mail_outgoing/__init__.py

@ -1 +1,2 @@
import mail_outgoing_models
# -*- coding: utf-8 -*-
from . import mail_outgoing_models

13
mail_outgoing/__openerp__.py

@ -1,17 +1,18 @@
# -*- coding: utf-8 -*-
{
'name' : 'Outgoing mails menu',
'version' : '1.0.0',
'author' : 'IT-Projects LLC, Ivan Yelizariev',
'name': 'Outgoing mails menu',
'version': '1.0.0',
'author': 'IT-Projects LLC, Ivan Yelizariev',
'license': 'LGPL-3',
"category": "Discuss",
'website' : 'https://yelizariev.github.io',
'website': 'https://yelizariev.github.io',
'description': """
Allows to check outgoing mails, i.e. failed or delayed.
Tested on Odoo 8.0 ab7b5d7732a7c222a0aea45bd173742acd47242d
""",
'depends' : ['mail'],
'data':[
'depends': ['mail'],
'data': [
'security/mail_outgoing.xml',
'security/ir.model.access.csv',
'mail_outgoing_views.xml',

5
mail_outgoing/mail_outgoing_models.py

@ -1,5 +1,7 @@
# -*- coding: utf-8 -*-
from openerp.osv import osv
class mail_message(osv.Model):
_inherit = 'mail.message'
@ -13,10 +15,11 @@ class mail_message(osv.Model):
return super(mail_message, self).check_access_rule(cr, uid, ids, operation, context)
class mail_mail(osv.Model):
_name = 'mail.mail'
_inherit = ['mail.mail', 'ir.needaction_mixin']
_needaction = True
def _needaction_domain_get(self, cr, uid, context=None):
return [('state','in', ['outgoing', 'exception'])]
return [('state', 'in', ['outgoing', 'exception'])]

3
mail_partner_lang/__init__.py

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

13
mail_partner_lang/__openerp__.py

@ -1,12 +1,13 @@
# -*- coding: utf-8 -*-
{
'name' : 'Use partner language in mail',
'version' : '1.0.0',
'author' : 'IT-Projects LLC, Ivan Yelizariev',
'name': 'Use partner language in mail',
'version': '1.0.0',
'author': 'IT-Projects LLC, Ivan Yelizariev',
'license': 'LGPL-3',
"category": "Discuss",
'website' : 'https://yelizariev.github.io',
'website': 'https://yelizariev.github.io',
'depends' : ['mail'],
'data':[],
'depends': ['mail'],
'data': [],
'installable': False,
}

7
mail_partner_lang/models.py

@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
from openerp.osv import osv,fields
from openerp import SUPERUSER_ID
from openerp.osv import osv
class mail_thread(osv.Model):
_inherit = "mail.thread"
@ -37,7 +38,7 @@ class mail_thread(osv.Model):
for browse_record in self.browse(cr, uid, ids, context=context):
p = getattr(browse_record, 'partner_id', None)
if p:
browse_record._context.update({'lang':p.lang})
browse_record._context.update({'lang': p.lang})
initial = initial_values[browse_record.id]
changes = set()

6
mail_recovery/README.rst

@ -18,7 +18,7 @@ Contributors
Sponsors
--------
* `IT-Projects LLC <https://it-projects.info>`_
* `IT-Projects LLC <https://it-projects.info>`__
Further information
===================
@ -27,8 +27,8 @@ Demo: http://runbot.it-projects.info/demo/mail-addons/9.0
HTML Description: https://apps.odoo.com/apps/modules/9.0/mail_recovery/
Usage instructions: `<doc/index.rst>`_
Usage instructions: `<doc/index.rst>`__
Changelog: `<doc/changelog.rst>`_
Changelog: `<doc/changelog.rst>`__
Tested on Odoo 9.0 fd9eb2e4819031c6758c021f4c335b591367632d

6
mail_recovery/static/src/js/mail_recovery.js

@ -10,14 +10,14 @@ odoo.define('mail_recovery', function (require) {
on_focus_textarea: function(event) {
var $input = $(event.target);
if (!$input.val()) {
$input.val(window.localStorage['message_storage']);
$input.val(window.localStorage.message_storage);
}
},
on_keyup_textarea: function(event) {
window.localStorage['message_storage'] = $(event.target).val();
window.localStorage.message_storage = $(event.target).val();
},
send_message: function (event) {
window.localStorage['message_storage'] = '';
window.localStorage.message_storage = '';
return this._super(event);
},
});

3
mail_sent/__init__.py

@ -1,3 +1,2 @@
# -*- coding: utf-8 -*-
import models
from . import models

2
mail_sent/tests/test_js.py

@ -1,8 +1,10 @@
import openerp.tests
@openerp.tests.common.at_install(False)
@openerp.tests.common.post_install(True)
class TestUi(openerp.tests.HttpCase):
def test_01_mail_sent(self):
# wait till page loaded and then click and wait again
code = """

2
mail_todo_custom/static/src/js/mail_todo_custom.js

@ -41,4 +41,4 @@ openerp.mail_todo_custom = function(session) {
},
});
}
};

1
mailgun/models.py

@ -12,6 +12,7 @@ from openerp.addons.mail.models.mail_thread import mail_header_msgid_re
import logging
_logger = logging.getLogger(__name__)
class MailThread(models.AbstractModel):
_inherit = 'mail.thread'

3
mass_mailing_extra/__init__.py

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

13
mass_mailing_extra/__openerp__.py

@ -1,10 +1,11 @@
# -*- coding: utf-8 -*-
{
'name' : 'Improvements for mass mailing',
'version' : '1.0.0',
'author' : 'IT-Projects LLC, Ivan Yelizariev',
'name': 'Improvements for mass mailing',
'version': '1.0.0',
'author': 'IT-Projects LLC, Ivan Yelizariev',
'license': 'LGPL-3',
"category": "Discuss",
'website' : 'https://yelizariev.github.io',
'website': 'https://yelizariev.github.io',
'description': """
Modules adds:
@ -13,8 +14,8 @@ Modules adds:
Tested on 8.0 f8d5a6727d3e8d428d9bef93da7ba6b11f344284
""",
'depends' : ['mass_mailing'],
'data':[
'depends': ['mass_mailing'],
'data': [
'views.xml',
],
'installable': False

9
mass_mailing_extra/models.py

@ -1,4 +1,6 @@
from openerp import api,models,fields
# -*- coding: utf-8 -*-
from openerp import api, models, fields
class MailMailStats(models.Model):
@ -8,7 +10,7 @@ class MailMailStats(models.Model):
@api.one
def _get_partner_id(self):
if self.model=='res.partner':
if self.model == 'res.partner':
self.partner_id = self.res_id
else:
self.partner_id = None
@ -22,7 +24,6 @@ class MailMailStats(models.Model):
res[p.id] = p
if self.partner_id and self.partner_id.id not in res:
res[self.partner_id.id] = self.partner_id
self.partners = ', '.join([('%s <%s>' % (p.name, p.email)) for id,p in res.items()])
self.partners = ', '.join([('%s <%s>' % (p.name, p.email)) for id, p in res.items()])
partners = fields.Char('Partners', compute=_get_partners)

4
oca_dependencies.txt

@ -0,0 +1,4 @@
OCA_web https://github.com/OCA/web
access-addons https://github.com/it-projects-llc/access-addons.git
misc-addons https://github.com/it-projects-llc/misc-addons
website-addons https://github.com/it-projects-llc/website-addons

2
res_partner_mails_count/__init__.py

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

3
res_partner_mails_count/tests/test_mail.py

@ -3,8 +3,9 @@
from openerp.tests.common import TransactionCase
class test_message_count(TransactionCase):
class TestMessageCount(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'})

5
res_partner_mails_count/tests/test_phantom.py

@ -1,11 +1,14 @@
# -*- coding: utf-8 -*-
import openerp.tests
@openerp.tests.common.at_install(False)
@openerp.tests.common.post_install(True)
class TestUi(openerp.tests.HttpCase):
def test_01_res_partner_mails_to_count(self):
# self.phantom_js('/', "openerp.Tour.run('mails_count_tour', 'test')", "openerp.Tour.tours.mails_count_tour", login="admin")
self.phantom_js("/", "odoo.__DEBUG__.services['web.Tour'].run('mails_count_tour', 'test')","odoo.__DEBUG__.services['web.Tour'].tours.mails_count_tour", login="admin")
self.phantom_js("/", "odoo.__DEBUG__.services['web.Tour'].run('mails_count_tour', 'test')", "odoo.__DEBUG__.services['web.Tour'].tours.mails_count_tour", login="admin")
def test_02_res_partner_mails_from_count(self):
# wait till page loaded and then click and wait again

2
res_partner_strip_email/__init__.py

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

3
res_partner_strip_email/models.py

@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
from openerp import models, fields, api
from openerp import api
from openerp import models
class res_partner_strip_email(models.Model):

Loading…
Cancel
Save