You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

99 lines
3.5 KiB

/** @odoo-module **/
import { patch } from "@web/core/utils/patch";
import { ListController } from '@web/views/list/list_controller';
import { useService } from "@web/core/utils/hooks";
import { _t } from "@web/core/l10n/translation";
import { DynamicRecordList } from "@web/model/relational_model/dynamic_record_list";
import {
deleteConfirmationMessage,
ConfirmationDialog,
} from "@web/core/confirmation_dialog/confirmation_dialog";
patch(ListController.prototype, {
setup() {
super.setup(...arguments);
this.orm = useService("orm");
},
// For tracking Create operation
async createRecord({group} = {}) {
const list = (group && group.list) || this.model.root;
var resModel = this.model.root.resModel;
if (this.editable && !list.isGrouped) {
if (!(list instanceof DynamicRecordList)) {
throw new Error("List should be a DynamicRecordList");
}
await list.leaveEditMode();
if (!list.editedRecord) {
await (group || list).addNewRecord(this.editable === "top");
}
this.render();
} else {
this.orm.call(
"user.audit",
"create_audit_log_for_create",
[resModel],
).then(function(data) {})
await this.props.createRecord();
}
},
//for tracking Read operation
async openRecord(record) {
if (this.archInfo.openAction) {
this.actionService.doActionButton({
name: this.archInfo.openAction.action,
type: this.archInfo.openAction.type,
resModel: record.resModel,
resId: record.resId,
resIds: record.resIds,
context: record.context,
onClose: async () => {
await record.model.root.load();
record.model.notify();
},
});
} else {
const activeIds = this.model.root.records.map((datapoint) => datapoint.resId);
this.props.selectRecord(record.resId, {
activeIds
});
}
var resModel = record.resModel;
var resId = record.resId
this.orm.call(
"user.audit",
"create_audit_log_for_read",
[resModel, resId],
).then(function(data) {})
},
//Multiple Record Delete Confirmation Popup
get deleteConfirmationDialogProps() {
const root = this.model.root;
let body = deleteConfirmationMessage;
if (root.isDomainSelected || root.selection.length > 1) {
body = _t("Are you sure you want to delete these records?");
}
return {
title: _t("Bye-bye, record!"),
body,
confirmLabel: _t("Delete"),
confirm: async () => {
await this.model.root.deleteRecords();
const root = this.model.root;
var resId = root.records[0].resId
var resModel = this.model.root.resModel;
this.orm.call(
"user.audit",
"create_audit_log_for_delete",
[resModel, resId],
).then(function(data) {
})
},
cancel: () => {},
cancelLabel: _t("No, keep it"),
};
},
//For managing Delete of multiple records
async onDeleteSelectedRecords() {
this.dialogService.add(ConfirmationDialog, this.deleteConfirmationDialogProps);
}
})