diff --git a/frappe/core/doctype/data_import/data_import.js b/frappe/core/doctype/data_import/data_import.js index eeaa5ac34e..c5bd4e99c9 100644 --- a/frappe/core/doctype/data_import/data_import.js +++ b/frappe/core/doctype/data_import/data_import.js @@ -7,15 +7,20 @@ frappe.ui.form.on('Data Import', { frm.set_value("action", ""); } - frm.set_query("reference_doctype", function() { - return { - "filters": { - "issingle": 0, - "istable": 0, - "name": ['in', frappe.boot.user.can_import] - } - }; - }); + frappe.call({ + method: "frappe.core.doctype.data_import.data_import.get_importable_doc", + callback: function (r) { + frm.set_query("reference_doctype", function () { + return { + "filters": { + "issingle": 0, + "istable": 0, + "name": ['in', r.message] + } + }; + }); + } + }), // should never check public frm.fields_dict["import_file"].df.is_private = 1; diff --git a/frappe/core/doctype/data_import/data_import.py b/frappe/core/doctype/data_import/data_import.py index 5500f1c617..80f8553121 100644 --- a/frappe/core/doctype/data_import/data_import.py +++ b/frappe/core/doctype/data_import/data_import.py @@ -29,6 +29,11 @@ class DataImport(Document): upload(data_import_doc=self, from_data_import="Yes", validate_template=True) +@frappe.whitelist() +def get_importable_doc(): + import_lst = frappe.cache().hget("can_import", frappe.session.user) + return import_lst + @frappe.whitelist() def import_data(data_import): frappe.db.set_value("Data Import", data_import, "import_status", "In Progress", update_modified=False) diff --git a/frappe/custom/doctype/customize_form/customize_form.json b/frappe/custom/doctype/customize_form/customize_form.json index d4b6bc6352..0b1df62f9d 100644 --- a/frappe/custom/doctype/customize_form/customize_form.json +++ b/frappe/custom/doctype/customize_form/customize_form.json @@ -18,6 +18,7 @@ "track_changes", "track_views", "allow_auto_repeat", + "allow_import", "image_view", "column_break_5", "title_field", @@ -167,13 +168,19 @@ "fieldname": "allow_auto_repeat", "fieldtype": "Check", "label": "Allow Auto Repeat" + }, + { + "default": "0", + "fieldname": "allow_import", + "fieldtype": "Check", + "label": "Allow Import (via Data Import Tool)" } ], "hide_toolbar": 1, "icon": "fa fa-glass", "idx": 1, "issingle": 1, - "modified": "2019-07-01 22:50:50.372465", + "modified": "2019-10-08 11:16:36.698006", "modified_by": "Administrator", "module": "Custom", "name": "Customize Form", diff --git a/frappe/custom/doctype/customize_form/customize_form.py b/frappe/custom/doctype/customize_form/customize_form.py index 425191c4eb..b851d40b83 100644 --- a/frappe/custom/doctype/customize_form/customize_form.py +++ b/frappe/custom/doctype/customize_form/customize_form.py @@ -30,7 +30,8 @@ doctype_properties = { 'max_attachments': 'Int', 'track_changes': 'Check', 'track_views': 'Check', - 'allow_auto_repeat': 'Check' + 'allow_auto_repeat': 'Check', + 'allow_import': 'Check' } docfield_properties = { diff --git a/frappe/utils/user.py b/frappe/utils/user.py index 1446b9749f..0959316ee8 100755 --- a/frappe/utils/user.py +++ b/frappe/utils/user.py @@ -157,8 +157,11 @@ class UserPermissions: self.can_read.remove(dt) if "System Manager" in self.get_roles(): - self.can_import = list(filter(lambda d: d in self.can_create, - frappe.db.sql_list("""select name from `tabDocType` where allow_import = 1"""))) + docs = [x["name"] for x in frappe.get_all("DocType", "name")] + for docname in docs: + if frappe.get_meta(docname, cached=False).allow_import == 1: + self.can_import.append(docname) + frappe.cache().hset("can_import", frappe.session.user, self.can_import) def get_defaults(self): import frappe.defaults