fix: prevent importing core doctypes using data import tool (#21649)

[skip ci]
This commit is contained in:
Ankush Menat 2023-07-12 12:07:33 +05:30 committed by GitHub
parent 17aad073d7
commit 04c1459631
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -7,11 +7,14 @@ import frappe
from frappe import _ from frappe import _
from frappe.core.doctype.data_import.exporter import Exporter from frappe.core.doctype.data_import.exporter import Exporter
from frappe.core.doctype.data_import.importer import Importer from frappe.core.doctype.data_import.importer import Importer
from frappe.model import core_doctypes_list
from frappe.model.document import Document from frappe.model.document import Document
from frappe.modules.import_file import import_file_by_path from frappe.modules.import_file import import_file_by_path
from frappe.utils.background_jobs import enqueue, is_job_enqueued from frappe.utils.background_jobs import enqueue, is_job_enqueued
from frappe.utils.csvutils import validate_google_sheets_url from frappe.utils.csvutils import validate_google_sheets_url
BLOCKED_DOCTYPES = set(core_doctypes_list) - {"User", "Role"}
class DataImport(Document): class DataImport(Document):
def validate(self): def validate(self):
@ -24,10 +27,15 @@ class DataImport(Document):
self.template_options = "" self.template_options = ""
self.template_warnings = "" self.template_warnings = ""
self.validate_doctype()
self.validate_import_file() self.validate_import_file()
self.validate_google_sheets_url() self.validate_google_sheets_url()
self.set_payload_count() self.set_payload_count()
def validate_doctype(self):
if self.reference_doctype in BLOCKED_DOCTYPES:
frappe.throw(_("Importing {0} is not allowed.").format(self.reference_doctype))
def validate_import_file(self): def validate_import_file(self):
if self.import_file: if self.import_file:
# validate template # validate template