Skip to content
Permalink
Browse files

⚡️ mail_sent fetching mails from channels

  • Loading branch information...
KolushovAlexandr committed Jul 5, 2019
1 parent c15b13f commit 0edd44b76925bf3b13e3f84ecff34b281f635978
Showing with 54 additions and 8 deletions.
  1. +1 −1 mail_sent/__manifest__.py
  2. +6 −0 mail_sent/doc/changelog.rst
  3. +4 −2 mail_sent/models.py
  4. +43 −5 mail_sent/static/src/js/sent.js
@@ -3,7 +3,7 @@
"summary": """Quick way to find sent messages""",
"category": "Discuss",
"images": ['images/menu.png'],
"version": "12.0.1.0.4",
"version": "12.0.1.1.0",

"author": "IT-Projects LLC, Ivan Yelizariev, Pavel Romanchenko",
"support": "apps@it-projects.info",
@@ -1,3 +1,9 @@
`1.1.0`
-------

- **Imp:** Fetches messages from channels
- **Fix:** Fetching mails from another threads

`1.0.4`
-------
- **FIX:** didn't work for non-admin users
@@ -6,14 +6,16 @@ class MailMessage(models.Model):

sent = fields.Boolean('Sent', compute="_compute_sent", help='Was message sent to someone', store=True)

@api.depends('author_id', 'partner_ids')
@api.depends('author_id', 'partner_ids', 'channel_ids')
def _compute_sent(self):
for r in self:
r_sudo = r.sudo()
sent = len(r_sudo.partner_ids) > 1 \
or len(r_sudo.partner_ids) == 1 \
and r_sudo.author_id \
and r_sudo.partner_ids[0].id != r_sudo.author_id.id
and r_sudo.partner_ids[0].id != r_sudo.author_id.id \
or len(r_sudo.partner_ids) == 0 \
and len(r_sudo.channel_ids)
r.sent = sent

@api.multi
@@ -5,6 +5,7 @@ var core = require('web.core');
var session = require('web.session');
var Manager = require('mail.Manager');
var Mailbox = require('mail.model.Mailbox');
var SearchableThread = require('mail.model.SearchableThread');

var _t = core._t;

@@ -18,15 +19,52 @@ Manager.include({
this._addMailbox({
id: 'channel_sent',
name: _t("Sent Messages"),
mailboxCounter: data.needaction_inbox_counter || 0,
mailboxCounter: 0,
});
}
},
});

SearchableThread.include({
_fetchMessages: function (pDomain, loadMore) {
var self = this;
if (this._id !== 'mailbox_channel_sent') {
return this._super(pDomain, loadMore);
}

_makeMessage: function (data) {
var message = this._super(data);
message._addThread('mailbox_channel_sent');
return message;
// this is a copy-paste from super method
var domain = this._getThreadDomain();
var cache = this._getCache(pDomain);
if (pDomain) {
domain = domain.concat(pDomain || []);
}
if (loadMore) {
var minMessageID = cache.messages[0].getID();
domain = [['id', '<', minMessageID]].concat(domain);
}
return this._rpc({
model: 'mail.message',
method: 'message_fetch',
args: [domain],
kwargs: this._getFetchMessagesKwargs(),
}).then(function (messages) {
// except this function. It adds the required thread to downloaded messages
_.each(messages, function(m){
m.channel_ids.push('mailbox_channel_sent');
});
if (!cache.allHistoryLoaded) {
cache.allHistoryLoaded = messages.length < self._FETCH_LIMIT;
}
cache.loaded = true;
_.each(messages, function (message) {
self.call('mail_service', 'addMessage', message, {
silent: true,
domain: pDomain,
});
});
cache = self._getCache(pDomain || []);
return cache.messages;
});
},
});

0 comments on commit 0edd44b

Please sign in to comment.
You can’t perform that action at this time.