Client script for exporting Custom Fields to py create_custom_fields format - ashish-greycube/help GitHub Wiki
- create client script (list view) with below code
- add the output to after migrate > create_custom_fields in py file
const remove_nulls = function (obj) {
return Object.fromEntries(Object.entries(obj).filter(([_, v]) => v != null && v != 0 && v != ""));
};
const fields = [
"dt",
"label",
"fieldname",
"insert_after",
"length",
"fieldtype",
"precision",
"options",
"fetch_from",
"fetch_if_empty",
"collapsible",
"collapsible_depends_on",
"default",
"depends_on",
"mandatory_depends_on",
"read_only_depends_on",
"reqd",
"unique",
"read_only",
"ignore_user_permissions",
"hidden",
"allow_on_submit",
"in_list_view",
"in_standard_filter",
"allow_in_quick_entry",
"translatable",
"description",
"columns"
]
const get_custom_fields = function (arr) {
let out = {};
for (const itr of arr) {
let dt = itr["dt"];
if (!out[dt]) {
out[dt] = [];
}
delete itr["dt"];
out[dt].push(remove_nulls(itr));
}
return out;
};
frappe.listview_settings["Custom Field"] = {
onload: function (listview) {
listview.page.add_menu_item(__("Export Fields"), function () {
let items = listview.get_checked_items(true);
frappe.db
.get_list("Custom Field", {
filters: { name: ["in", items] },
order_by: "idx",
fields: fields,
})
.then((r) => {
let out = get_custom_fields(r);
frappe.utils.copy_to_clipboard(JSON.stringify(out));
console.log(JSON.stringify(out));
});
});
},
};