fix(Rename Tool): allow more than 500 rows (backport #47117) (#47225)

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:
mergify[bot]
2025-04-23 20:26:03 +02:00
committed by GitHub
parent 8050e653ab
commit c0ae1336f4
2 changed files with 62 additions and 14 deletions

View File

@@ -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>
`);
});
},
});

View File

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