[IMP] black, isort, prettier
This commit is contained in:
parent
45329a2c29
commit
1919902772
@ -2,21 +2,14 @@
|
|||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
|
||||||
{
|
{
|
||||||
'name': 'Mail Message Reply',
|
"name": "Mail Message Reply",
|
||||||
'summary': """
|
"summary": """
|
||||||
Make a reply using a message""",
|
Make a reply using a message""",
|
||||||
'version': '12.0.1.0.0',
|
"version": "12.0.1.0.0",
|
||||||
'license': 'AGPL-3',
|
"license": "AGPL-3",
|
||||||
'author': 'Creu Blanca,Odoo Community Association (OCA)',
|
"author": "Creu Blanca,Odoo Community Association (OCA)",
|
||||||
'website': 'https://github.com/OCA/social',
|
"website": "https://github.com/OCA/social",
|
||||||
'depends': [
|
"depends": ["mail"],
|
||||||
'mail'
|
"qweb": ["static/src/xml/mail_message_reply.xml",],
|
||||||
],
|
"data": ["templates/assets.xml", "data/reply_template.xml",],
|
||||||
'qweb': [
|
|
||||||
'static/src/xml/mail_message_reply.xml',
|
|
||||||
],
|
|
||||||
'data': [
|
|
||||||
"templates/assets.xml",
|
|
||||||
"data/reply_template.xml",
|
|
||||||
],
|
|
||||||
}
|
}
|
||||||
|
@ -3,9 +3,11 @@
|
|||||||
<record id="reply_template" model="mail.template">
|
<record id="reply_template" model="mail.template">
|
||||||
<field name="name">Reply</field>
|
<field name="name">Reply</field>
|
||||||
<field name="subject">Re: ${object.subject}</field>
|
<field name="subject">Re: ${object.subject}</field>
|
||||||
<field name="use_default_to" eval="True"/>
|
<field name="use_default_to" eval="True" />
|
||||||
<field name="model_id" ref="mail.model_mail_message"/>
|
<field name="model_id" ref="mail.model_mail_message" />
|
||||||
<field name="body_html"><![CDATA[
|
<field
|
||||||
|
name="body_html"
|
||||||
|
><![CDATA[
|
||||||
<div>
|
<div>
|
||||||
</div>
|
</div>
|
||||||
<br/>
|
<br/>
|
||||||
|
@ -6,26 +6,20 @@ from odoo import models
|
|||||||
|
|
||||||
class MailMessage(models.Model):
|
class MailMessage(models.Model):
|
||||||
|
|
||||||
_inherit = 'mail.message'
|
_inherit = "mail.message"
|
||||||
|
|
||||||
def reply_message(self):
|
def reply_message(self):
|
||||||
action = self.env.ref(
|
action = self.env.ref("mail.action_email_compose_message_wizard").read()[0]
|
||||||
"mail.action_email_compose_message_wizard"
|
action["context"] = {
|
||||||
).read()[0]
|
|
||||||
action['context'] = {
|
|
||||||
"default_model": self._name,
|
"default_model": self._name,
|
||||||
"default_res_id": self.id,
|
"default_res_id": self.id,
|
||||||
"default_template_id": self.env.ref(
|
"default_template_id": self.env.ref("mail_quoted_reply.reply_template").id,
|
||||||
"mail_quoted_reply.reply_template"
|
|
||||||
).id,
|
|
||||||
"default_composition_mode": "comment",
|
"default_composition_mode": "comment",
|
||||||
"default_is_log": False,
|
"default_is_log": False,
|
||||||
"is_log": False,
|
"is_log": False,
|
||||||
"default_notify": True,
|
"default_notify": True,
|
||||||
"force_email": True,
|
"force_email": True,
|
||||||
"reassign_to_parent": True,
|
"reassign_to_parent": True,
|
||||||
"default_partner_ids": [
|
"default_partner_ids": [(6, 0, self.partner_ids.ids)],
|
||||||
(6, 0, self.partner_ids.ids)
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
return action
|
return action
|
||||||
|
@ -1,53 +1,60 @@
|
|||||||
/* Copyright 2021 Creu Blanca
|
/* Copyright 2021 Creu Blanca
|
||||||
* 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_quote_reply.reply', function (require) {
|
odoo.define("mail_quote_reply.reply", function(require) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var ThreadWidget = require('mail.widget.Thread');
|
var ThreadWidget = require("mail.widget.Thread");
|
||||||
var ThreadField = require('mail.ThreadField');
|
var ThreadField = require("mail.ThreadField");
|
||||||
var DocumentThread = require('mail.model.DocumentThread');
|
var DocumentThread = require("mail.model.DocumentThread");
|
||||||
|
|
||||||
DocumentThread.include({
|
DocumentThread.include({
|
||||||
_fetchMessages: function(options) {
|
_fetchMessages: function(options) {
|
||||||
if (options && options.forceReloadMessages) {
|
if (options && options.forceReloadMessages) {
|
||||||
this._mustFetchMessageIDs = true;
|
this._mustFetchMessageIDs = true;
|
||||||
}
|
}
|
||||||
return this._super.apply(this, arguments)
|
return this._super.apply(this, arguments);
|
||||||
}
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
ThreadField.include({
|
ThreadField.include({
|
||||||
start: function () {
|
start: function() {
|
||||||
var self = this;
|
var self = this;
|
||||||
return this._super.apply(this, arguments).then(function () {
|
return this._super.apply(this, arguments).then(function() {
|
||||||
self._threadWidget.on('reload_thread_messages', self, self._onReloadThreadMessages);
|
self._threadWidget.on(
|
||||||
})
|
"reload_thread_messages",
|
||||||
|
self,
|
||||||
|
self._onReloadThreadMessages
|
||||||
|
);
|
||||||
|
});
|
||||||
},
|
},
|
||||||
_onReloadThreadMessages: function () {
|
_onReloadThreadMessages: function() {
|
||||||
this._fetchAndRenderThread({forceReloadMessages: true });
|
this._fetchAndRenderThread({forceReloadMessages: true});
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
ThreadWidget.include({
|
ThreadWidget.include({
|
||||||
events: _.defaults({
|
events: _.defaults(
|
||||||
"click .o_thread_mail_message_reply": "_onClickMailMessageReply",
|
{
|
||||||
}, ThreadWidget.prototype.events),
|
"click .o_thread_mail_message_reply": "_onClickMailMessageReply",
|
||||||
|
},
|
||||||
|
ThreadWidget.prototype.events
|
||||||
|
),
|
||||||
|
|
||||||
_onClickMailMessageReply: function(event) {
|
_onClickMailMessageReply: function(event) {
|
||||||
var self = this,
|
var self = this,
|
||||||
msg_id = $(event.currentTarget).data('message-id');
|
msg_id = $(event.currentTarget).data("message-id");
|
||||||
this._rpc({
|
this._rpc({
|
||||||
model: "mail.message",
|
model: "mail.message",
|
||||||
method: "reply_message",
|
method: "reply_message",
|
||||||
args: [msg_id],
|
args: [msg_id],
|
||||||
}).then(function (result) {
|
}).then(function(result) {
|
||||||
self.do_action(result, {
|
self.do_action(result, {
|
||||||
on_close: function () {
|
on_close: function() {
|
||||||
self.trigger('reload_thread_messages');
|
self.trigger("reload_thread_messages");
|
||||||
},
|
},
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
});
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -1,12 +1,17 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<!-- Copyright 2021 Creu Blanca
|
<!-- Copyright 2021 Creu Blanca
|
||||||
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). -->
|
||||||
<template>
|
<template>
|
||||||
<t t-extend="mail.widget.Thread.Message">
|
<t t-extend="mail.widget.Thread.Message">
|
||||||
<t t-jquery=".o_thread_message_reply" t-operation="after">
|
<t t-jquery=".o_thread_message_reply" t-operation="after">
|
||||||
<i t-if="message.isLinkedToDocumentThread() and !options.displayReplyIcons and !message.isSystemNotification()"
|
<i
|
||||||
class="fa fa-reply o_thread_icon o_thread_mail_message_reply"
|
t-if="message.isLinkedToDocumentThread() and !options.displayReplyIcons and !message.isSystemNotification()"
|
||||||
t-att-data-message-id="message.getID()" title="Reply" role="img" aria-label="Reply"/>
|
class="fa fa-reply o_thread_icon o_thread_mail_message_reply"
|
||||||
|
t-att-data-message-id="message.getID()"
|
||||||
|
title="Reply"
|
||||||
|
role="img"
|
||||||
|
aria-label="Reply"
|
||||||
|
/>
|
||||||
</t>
|
</t>
|
||||||
</t>
|
</t>
|
||||||
</template>
|
</template>
|
||||||
|
@ -1,17 +1,19 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
|
||||||
<!-- Copyright 2014-2015 Grupo ESOC <http://www.grupoesoc.es>
|
<!-- Copyright 2014-2015 Grupo ESOC <http://www.grupoesoc.es>
|
||||||
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>
|
<odoo>
|
||||||
|
|
||||||
<template id="assets_backend"
|
<template
|
||||||
name="mail_quoted_reply assets"
|
id="assets_backend"
|
||||||
inherit_id="web.assets_backend">
|
name="mail_quoted_reply assets"
|
||||||
|
inherit_id="web.assets_backend"
|
||||||
|
>
|
||||||
<xpath expr="." position="inside">
|
<xpath expr="." position="inside">
|
||||||
|
|
||||||
<script type="text/javascript"
|
<script
|
||||||
src="/mail_quoted_reply/static/src/js/mail_message_reply.js"/>
|
type="text/javascript"
|
||||||
|
src="/mail_quoted_reply/static/src/js/mail_message_reply.js"
|
||||||
|
/>
|
||||||
</xpath>
|
</xpath>
|
||||||
</template>
|
</template>
|
||||||
</odoo>
|
</odoo>
|
||||||
|
@ -5,34 +5,28 @@ from odoo.tests import TransactionCase
|
|||||||
|
|
||||||
class TestMessageReply(TransactionCase):
|
class TestMessageReply(TransactionCase):
|
||||||
def test_reply(self):
|
def test_reply(self):
|
||||||
partner = self.env["res.partner"].create({
|
partner = self.env["res.partner"].create({"name": "demo partner"})
|
||||||
"name": "demo partner"
|
|
||||||
})
|
|
||||||
self.assertFalse(
|
self.assertFalse(
|
||||||
partner.message_ids.filtered(
|
partner.message_ids.filtered(lambda r: r.message_type != "notification")
|
||||||
lambda r: r.message_type != 'notification'
|
|
||||||
)
|
|
||||||
)
|
|
||||||
message = partner.message_post(
|
|
||||||
body="demo message",
|
|
||||||
message_type="email"
|
|
||||||
)
|
)
|
||||||
|
message = partner.message_post(body="demo message", message_type="email")
|
||||||
partner.refresh()
|
partner.refresh()
|
||||||
self.assertIn(
|
self.assertIn(
|
||||||
message,
|
message,
|
||||||
partner.message_ids.filtered(
|
partner.message_ids.filtered(lambda r: r.message_type != "notification"),
|
||||||
lambda r: r.message_type != 'notification')
|
)
|
||||||
|
self.assertFalse(
|
||||||
|
partner.message_ids.filtered(
|
||||||
|
lambda r: r.message_type != "notification" and r != message
|
||||||
|
)
|
||||||
)
|
)
|
||||||
self.assertFalse(partner.message_ids.filtered(
|
|
||||||
lambda r: r.message_type != 'notification' and r != message
|
|
||||||
))
|
|
||||||
action = message.reply_message()
|
action = message.reply_message()
|
||||||
wizard = self.env[action["res_model"]].with_context(
|
wizard = (
|
||||||
action["context"]
|
self.env[action["res_model"]].with_context(action["context"]).create({})
|
||||||
).create({})
|
)
|
||||||
wizard.action_send_mail()
|
wizard.action_send_mail()
|
||||||
new_message = partner.message_ids.filtered(
|
new_message = partner.message_ids.filtered(
|
||||||
lambda r: r.message_type != 'notification' and r != message
|
lambda r: r.message_type != "notification" and r != message
|
||||||
)
|
)
|
||||||
self.assertTrue(new_message)
|
self.assertTrue(new_message)
|
||||||
self.assertEqual(1, len(new_message))
|
self.assertEqual(1, len(new_message))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user