Odoo18-Base/addons/mail/static/tests/mock_server/mock_models/base.js
2025-01-06 10:57:38 +07:00

67 lines
2.1 KiB
JavaScript

import { getKwArgs, models } from "@web/../tests/web_test_helpers";
import { patch } from "@web/core/utils/patch";
patch(models.ServerModel.prototype, {
/**
* @override
* @type {typeof models.ServerModel["prototype"]["get_views"]}
*/
get_views() {
const result = super.get_views(...arguments);
for (const modelName of Object.keys(result.models)) {
if (this.has_activities) {
result.models[modelName].has_activities = true;
}
}
return result;
},
});
export class Base extends models.ServerModel {
_name = "base";
/**
* @param {Object} trackedFieldNamesToField
* @param {Object} initialTrackedFieldValues
* @param {Object} record
*/
_mail_track(trackedFieldNamesToField, initialTrackedFieldValues, record) {
const kwargs = getKwArgs(
arguments,
"trackedFieldNamesToField",
"initialTrackedFieldValues",
"record"
);
trackedFieldNamesToField = kwargs.trackedFieldNamesToField;
initialTrackedFieldValues = kwargs.initialTrackedFieldValues;
record = kwargs.record;
/** @type {import("mock_models").MailTrackingValue} */
const MailTrackingValue = this.env["mail.tracking.value"];
const trackingValueIds = [];
const changedFieldNames = [];
for (const fname in trackedFieldNamesToField) {
const initialValue = initialTrackedFieldValues[fname];
const newValue = record[fname];
if (!initialValue && !newValue) {
continue;
}
if (initialValue !== newValue) {
const tracking = MailTrackingValue._create_tracking_values(
initialValue,
newValue,
fname,
trackedFieldNamesToField[fname],
this
);
if (tracking) {
trackingValueIds.push(tracking);
}
changedFieldNames.push(fname);
}
}
return { changedFieldNames, trackingValueIds };
}
}