Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com> fix(Rename Tool): allow more than 500 rows (#47117)
This commit is contained in:
@@ -18,29 +18,70 @@ frappe.ui.form.on("Rename Tool", {
|
||||
allowed_file_types: [".csv"],
|
||||
},
|
||||
};
|
||||
if (!frm.doc.file_to_rename) {
|
||||
frm.get_field("rename_log").$wrapper.html("");
|
||||
}
|
||||
|
||||
frm.trigger("render_overview");
|
||||
|
||||
frm.page.set_primary_action(__("Rename"), function () {
|
||||
frm.get_field("rename_log").$wrapper.html("<p>Renaming...</p>");
|
||||
frappe.call({
|
||||
method: "erpnext.utilities.doctype.rename_tool.rename_tool.upload",
|
||||
args: {
|
||||
select_doctype: frm.doc.select_doctype,
|
||||
},
|
||||
callback: function (r) {
|
||||
let html = r.message.join("<br>");
|
||||
freeze: true,
|
||||
freeze_message: __("Scheduling..."),
|
||||
callback: function () {
|
||||
frappe.msgprint({
|
||||
message: __("Rename jobs for doctype {0} have been enqueued.", [
|
||||
frm.doc.select_doctype,
|
||||
]),
|
||||
alert: true,
|
||||
indicator: "green",
|
||||
});
|
||||
frm.set_value("select_doctype", "");
|
||||
frm.set_value("file_to_rename", "");
|
||||
|
||||
if (r.exc) {
|
||||
r.exc = frappe.utils.parse_json(r.exc);
|
||||
if (Array.isArray(r.exc)) {
|
||||
html += "<br>" + r.exc.join("<br>");
|
||||
}
|
||||
}
|
||||
frm.trigger("render_overview");
|
||||
},
|
||||
error: function (r) {
|
||||
frappe.msgprint({
|
||||
message: __("Rename jobs for doctype {0} have not been enqueued.", [
|
||||
frm.doc.select_doctype,
|
||||
]),
|
||||
alert: true,
|
||||
indicator: "red",
|
||||
});
|
||||
|
||||
frm.get_field("rename_log").$wrapper.html(html);
|
||||
frm.trigger("render_overview");
|
||||
},
|
||||
});
|
||||
});
|
||||
},
|
||||
render_overview: function (frm) {
|
||||
frappe.db
|
||||
.get_list("RQ Job", { filters: { status: ["in", ["started", "queued", "finished", "failed"]] } })
|
||||
.then((jobs) => {
|
||||
let counts = {
|
||||
started: 0,
|
||||
queued: 0,
|
||||
finished: 0,
|
||||
failed: 0,
|
||||
};
|
||||
|
||||
for (const job of jobs) {
|
||||
if (job.job_name !== "frappe.model.rename_doc.bulk_rename") {
|
||||
continue;
|
||||
}
|
||||
|
||||
counts[job.status]++;
|
||||
}
|
||||
|
||||
frm.get_field("rename_log").$wrapper.html(`
|
||||
<p><strong>${__("Bulk Rename Jobs")}</a></strong></p>
|
||||
<p><a href="/app/rq-job?queue=long&status=queued">${__("Queued")}: ${counts.queued}</a></p>
|
||||
<p><a href="/app/rq-job?queue=long&status=started">${__("Started")}: ${counts.started}</a></p>
|
||||
<p><a href="/app/rq-job?queue=long&status=finished">${__("Finished")}: ${counts.finished}</a></p>
|
||||
<p><a href="/app/rq-job?queue=long&status=failed">${__("Failed")}: ${counts.failed}</a></p>
|
||||
`);
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
@@ -45,4 +45,11 @@ def upload(select_doctype=None, rows=None):
|
||||
|
||||
rows = read_csv_content_from_attached_file(frappe.get_doc("Rename Tool", "Rename Tool"))
|
||||
|
||||
return bulk_rename(select_doctype, rows=rows)
|
||||
# bulk rename allows only 500 rows at a time, so we created one job per 500 rows
|
||||
for i in range(0, len(rows), 500):
|
||||
frappe.enqueue(
|
||||
method=bulk_rename,
|
||||
queue="long",
|
||||
doctype=select_doctype,
|
||||
rows=rows[i : i + 500],
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user