David
7 years ago
committed by
ernesto
24 changed files with 122 additions and 168 deletions
-
11mail_tracking/README.rst
-
3mail_tracking/__init__.py
-
8mail_tracking/__manifest__.py
-
3mail_tracking/controllers/__init__.py
-
9mail_tracking/controllers/main.py
-
2mail_tracking/data/tracking_data.xml
-
3mail_tracking/hooks.py
-
3mail_tracking/models/__init__.py
-
18mail_tracking/models/ir_mail_server.py
-
3mail_tracking/models/mail_mail.py
-
3mail_tracking/models/mail_message.py
-
24mail_tracking/models/mail_tracking_email.py
-
3mail_tracking/models/mail_tracking_event.py
-
3mail_tracking/models/res_partner.py
-
2mail_tracking/security/mail_tracking_email_security.xml
-
2mail_tracking/static/src/css/mail_tracking.css
-
163mail_tracking/static/src/js/mail_tracking.js
-
4mail_tracking/static/src/xml/mail_tracking.xml
-
2mail_tracking/tests/__init__.py
-
13mail_tracking/tests/test_mail_tracking.py
-
2mail_tracking/views/assets.xml
-
2mail_tracking/views/mail_tracking_email_view.xml
-
2mail_tracking/views/mail_tracking_event_view.xml
-
2mail_tracking/views/res_partner_view.xml
@ -1,7 +1,4 @@ |
|||||
# -*- coding: utf-8 -*- |
|
||||
# © 2016 Antonio Espinosa - <antonio.espinosa@tecnativa.com> |
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). |
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). |
||||
# flake8: noqa |
|
||||
|
|
||||
from . import models |
from . import models |
||||
from . import controllers |
from . import controllers |
||||
|
@ -1,6 +1,3 @@ |
|||||
# -*- coding: utf-8 -*- |
|
||||
# © 2016 Antonio Espinosa - <antonio.espinosa@tecnativa.com> |
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). |
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). |
||||
# flake8: noqa |
|
||||
|
|
||||
from . import main |
from . import main |
@ -1,98 +1,83 @@ |
|||||
/* © 2016 Antonio Espinosa - <antonio.espinosa@tecnativa.com> |
|
||||
|
/* Copyright 2016 Antonio Espinosa - <antonio.espinosa@tecnativa.com> |
||||
|
Copyright 2018 David Vidal - <david.vidal@tecnativa.com> |
||||
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). */
|
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). */
|
||||
|
|
||||
odoo.define('mail_tracking.partner_tracking', function(require){ |
odoo.define('mail_tracking.partner_tracking', function(require){ |
||||
"use strict"; |
|
||||
|
"use strict"; |
||||
|
|
||||
var core = require('web.core'); |
|
||||
var session = require('web.session'); |
|
||||
var Model = require('web.Model'); |
|
||||
var ActionManager = require('web.ActionManager'); |
|
||||
var ChatThread = require('mail.ChatThread'); |
|
||||
|
var core = require('web.core'); |
||||
|
var session = require('web.session'); |
||||
|
var data = require('web.data'); |
||||
|
var ActionManager = require('web.ActionManager'); |
||||
|
var chat_manager = require('mail.chat_manager'); |
||||
|
var ChatThread = require('mail.ChatThread'); |
||||
|
var Chatter = require('mail.Chatter'); |
||||
|
|
||||
var _t = core._t; |
|
||||
var MessageModel = new Model('mail.message', session.context); |
|
||||
|
var _t = core._t; |
||||
|
|
||||
|
|
||||
ChatThread.include({ |
|
||||
_preprocess_message: function (message) { |
|
||||
var msg = this._super.apply(this, arguments); |
|
||||
msg.partner_trackings = msg.partner_trackings || []; |
|
||||
|
// chat_manager is a simple dictionary, not an OdooClass
|
||||
|
chat_manager._make_message_super = chat_manager.make_message; |
||||
|
chat_manager.make_message = function(data) { |
||||
|
var msg = this._make_message_super(data); |
||||
|
msg.partner_trackings = data.partner_trackings || []; |
||||
return msg; |
return msg; |
||||
}, |
|
||||
on_tracking_partner_click: function (event) { |
|
||||
var partner_id = this.$el.find(event.currentTarget).data('partner'); |
|
||||
var state = { |
|
||||
'model': 'res.partner', |
|
||||
'id': partner_id, |
|
||||
'title': _t("Tracking partner"), |
|
||||
}; |
|
||||
event.preventDefault(); |
|
||||
this.action_manager.do_push_state(state); |
|
||||
var action = { |
|
||||
type:'ir.actions.act_window', |
|
||||
view_type: 'form', |
|
||||
view_mode: 'form', |
|
||||
res_model: 'res.partner', |
|
||||
views: [[false, 'form']], |
|
||||
target: 'current', |
|
||||
res_id: partner_id, |
|
||||
}; |
|
||||
this.do_action(action); |
|
||||
}, |
|
||||
on_tracking_status_click: function (event) { |
|
||||
var tracking_email_id = $(event.currentTarget).data('tracking'); |
|
||||
var state = { |
|
||||
'model': 'mail.tracking.email', |
|
||||
'id': tracking_email_id, |
|
||||
'title': _t("Message tracking"), |
|
||||
}; |
|
||||
event.preventDefault(); |
|
||||
this.action_manager.do_push_state(state); |
|
||||
var action = { |
|
||||
type:'ir.actions.act_window', |
|
||||
view_type: 'form', |
|
||||
view_mode: 'form', |
|
||||
res_model: 'mail.tracking.email', |
|
||||
views: [[false, 'form']], |
|
||||
target: 'new', |
|
||||
res_id: tracking_email_id, |
|
||||
}; |
|
||||
this.do_action(action); |
|
||||
}, |
|
||||
bind_events: function () { |
|
||||
this.$el.on('click', '.o_mail_action_tracking_partner', |
|
||||
this.on_tracking_partner_click); |
|
||||
this.$el.on('click', '.o_mail_action_tracking_status', |
|
||||
this.on_tracking_status_click); |
|
||||
}, |
|
||||
init: function (parent, options) { |
|
||||
this._super.apply(this, arguments); |
|
||||
this.action_manager = this.findAncestor(function(ancestor){ |
|
||||
return ancestor instanceof ActionManager; |
|
||||
}); |
|
||||
}, |
|
||||
start: function () { |
|
||||
this._super(); |
|
||||
this.bind_events(); |
|
||||
}, |
|
||||
render: function(messages, options) { |
|
||||
var self = this, render_super = this._super, |
|
||||
msgs = {}, |
|
||||
msg_ids = []; |
|
||||
// Update trackings (async) each time we re-render thread
|
|
||||
_.each(messages, function (message) { |
|
||||
msgs[message.id] = message; |
|
||||
msg_ids.push(message.id); |
|
||||
}); |
|
||||
MessageModel.call('tracking_status', [msg_ids]).then(function (trackings) { |
|
||||
_.each(trackings, function (tracking, id) { |
|
||||
msgs[id].partner_trackings = tracking; |
|
||||
}); |
|
||||
render_super.apply(self, [messages, options]); |
|
||||
}); |
|
||||
}, |
|
||||
|
}; |
||||
|
|
||||
|
ChatThread.include({ |
||||
|
events: _.extend(ChatThread.prototype.events, { |
||||
|
'click .o_mail_action_tracking_partner': 'on_tracking_partner_click', |
||||
|
'click .o_mail_action_tracking_status': 'on_tracking_status_click', |
||||
|
}), |
||||
|
_preprocess_message: function (message) { |
||||
|
var msg = this._super.apply(this, arguments); |
||||
|
msg.partner_trackings = msg.partner_trackings || []; |
||||
|
return msg; |
||||
|
}, |
||||
|
on_tracking_partner_click: function (event) { |
||||
|
var partner_id = this.$el.find(event.currentTarget).data('partner'); |
||||
|
var state = { |
||||
|
'model': 'res.partner', |
||||
|
'id': partner_id, |
||||
|
'title': _t("Tracking partner"), |
||||
|
}; |
||||
|
event.preventDefault(); |
||||
|
this.action_manager.do_push_state(state); |
||||
|
var action = { |
||||
|
type:'ir.actions.act_window', |
||||
|
view_type: 'form', |
||||
|
view_mode: 'form', |
||||
|
res_model: 'res.partner', |
||||
|
views: [[false, 'form']], |
||||
|
target: 'current', |
||||
|
res_id: partner_id, |
||||
|
}; |
||||
|
this.do_action(action); |
||||
|
}, |
||||
|
on_tracking_status_click: function (event) { |
||||
|
var tracking_email_id = $(event.currentTarget).data('tracking'); |
||||
|
var state = { |
||||
|
'model': 'mail.tracking.email', |
||||
|
'id': tracking_email_id, |
||||
|
'title': _t("Message tracking"), |
||||
|
}; |
||||
|
event.preventDefault(); |
||||
|
this.action_manager.do_push_state(state); |
||||
|
var action = { |
||||
|
type:'ir.actions.act_window', |
||||
|
view_type: 'form', |
||||
|
view_mode: 'form', |
||||
|
res_model: 'mail.tracking.email', |
||||
|
views: [[false, 'form']], |
||||
|
target: 'new', |
||||
|
res_id: tracking_email_id, |
||||
|
}; |
||||
|
this.do_action(action); |
||||
|
}, |
||||
|
init: function (parent, options) { |
||||
|
this._super.apply(this, arguments); |
||||
|
this.action_manager = this.findAncestor(function(ancestor){ |
||||
|
return ancestor instanceof ActionManager; |
||||
|
}); |
||||
|
}, |
||||
|
}); |
||||
}); |
}); |
||||
|
|
||||
}); // odoo.define
|
|
@ -1,5 +1,5 @@ |
|||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||
# © 2016 Antonio Espinosa - <antonio.espinosa@tecnativa.com> |
|
||||
|
# Copyright 2016 Antonio Espinosa - <antonio.espinosa@tecnativa.com> |
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). |
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). |
||||
# flake8: noqa |
# flake8: noqa |
||||
|
|
||||
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue