[IMP] black, isort, prettier

This commit is contained in:
Lois Rilo 2022-06-03 20:10:54 +02:00 committed by jb
parent 45329a2c29
commit 1919902772
7 changed files with 83 additions and 86 deletions

View File

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

View File

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

View File

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

View File

@ -1,50 +1,57 @@
/* 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", "click .o_thread_mail_message_reply": "_onClickMailMessageReply",
}, ThreadWidget.prototype.events), },
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");
}, },
}); });
}); });

View File

@ -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
t-if="message.isLinkedToDocumentThread() and !options.displayReplyIcons and !message.isSystemNotification()"
class="fa fa-reply o_thread_icon o_thread_mail_message_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-att-data-message-id="message.getID()"
title="Reply"
role="img"
aria-label="Reply"
/>
</t> </t>
</t> </t>
</template> </template>

View File

@ -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
id="assets_backend"
name="mail_quoted_reply assets" name="mail_quoted_reply assets"
inherit_id="web.assets_backend"> 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>

View File

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