78 lines
2.6 KiB
JavaScript
78 lines
2.6 KiB
JavaScript
/* @odoo-module */
|
|
|
|
import { patch } from "@web/core/utils/patch";
|
|
import { MockServer } from "@web/../tests/helpers/mock_server";
|
|
|
|
patch(MockServer.prototype, {
|
|
async _performRPC(route, args) {
|
|
if (args.model === "ir.attachment" && args.method === "register_as_main_attachment") {
|
|
const ids = args.args[0];
|
|
return this._mockIrAttachmentRegisterAsMainAttachment(ids);
|
|
}
|
|
return super._performRPC(route, args);
|
|
},
|
|
/**
|
|
* Simulates `_attachment_format` on `ir.attachment`.
|
|
*
|
|
* @private
|
|
* @param {integer} ids
|
|
* @returns {Object}
|
|
*/
|
|
_mockIrAttachment_attachmentFormat(ids) {
|
|
const attachments = this.mockRead("ir.attachment", [ids]);
|
|
return attachments.map((attachment) => {
|
|
const res = {
|
|
create_date: attachment.create_date,
|
|
checksum: attachment.checksum,
|
|
filename: attachment.name,
|
|
id: attachment.id,
|
|
mimetype: attachment.mimetype,
|
|
name: attachment.name,
|
|
size: attachment.file_size,
|
|
};
|
|
res["originThread"] = [
|
|
[
|
|
"ADD",
|
|
{
|
|
id: attachment.res_id,
|
|
model: attachment.res_model,
|
|
},
|
|
],
|
|
];
|
|
const voice = this.getRecords("discuss.voice.metadata", [
|
|
["attachment_id", "=", attachment.id],
|
|
])[0];
|
|
if (voice) {
|
|
res.voice = true;
|
|
}
|
|
return res;
|
|
});
|
|
},
|
|
/**
|
|
* Simulates `register_as_main_attachment` on `ir.attachment`.
|
|
*
|
|
* @private
|
|
* @param {integer} ids
|
|
* @param {boolean} [force=true]
|
|
* @returns {boolean} dummy value for mock server
|
|
*/
|
|
_mockIrAttachmentRegisterAsMainAttachment(ids, force = true) {
|
|
const [attachment] = this.getRecords("ir.attachment", [["id", "in", ids]]);
|
|
if (!attachment.res_model) {
|
|
return true; // dummy value for mock server
|
|
}
|
|
if (!this.models[attachment.res_model].fields["message_main_attachment_id"]) {
|
|
return true; // dummy value for mock server
|
|
}
|
|
const [record] = this.pyEnv[attachment.res_model].searchRead([
|
|
["id", "=", attachment.res_id],
|
|
]);
|
|
if (force || !record.message_main_attachment_id) {
|
|
this.pyEnv[attachment.res_model].write([record.id], {
|
|
message_main_attachment_id: attachment.id,
|
|
});
|
|
}
|
|
return true; // dummy value for mock server
|
|
},
|
|
});
|