diff --git a/frappe/core/doctype/data_import/data_import.py b/frappe/core/doctype/data_import/data_import.py index 02624cdf65..3ca154c384 100644 --- a/frappe/core/doctype/data_import/data_import.py +++ b/frappe/core/doctype/data_import/data_import.py @@ -34,8 +34,10 @@ def import_data(data_import): frappe.db.set_value("Data Import", data_import, "import_status", "In Progress", update_modified=False) frappe.publish_realtime("data_import_progress", {"progress": "0", "data_import": data_import, "reload": True}, user=frappe.session.user) + from frappe.core.page.background_jobs.background_jobs import get_info enqueued_jobs = [d.get("job_name") for d in get_info()] + if data_import not in enqueued_jobs: enqueue(upload, queue='default', timeout=6000, event='data_import', job_name=data_import, data_import_doc=data_import, from_data_import="Yes", user=frappe.session.user) diff --git a/frappe/core/doctype/data_import/importer.py b/frappe/core/doctype/data_import/importer.py index fe9fe77955..4ab7c3a10c 100644 --- a/frappe/core/doctype/data_import/importer.py +++ b/frappe/core/doctype/data_import/importer.py @@ -427,15 +427,28 @@ def upload(rows = None, submit_after_import=None, ignore_encoding_errors=False, except Exception as e: error_flag = True - err_msg = frappe.local.message_log and "\n".join([json.loads(msg).get('message') for msg in frappe.local.message_log]) or cstr(e) + + # build error message + if frappe.local.message_log: + err_msg = "\n".join(['
{}
'.format(json.loads(msg).get('message')) for msg in frappe.local.message_log]) + else: + err_msg = '{}
'.format(cstr(e)) + error_trace = frappe.get_traceback() if error_trace: error_log_doc = frappe.log_error(error_trace) error_link = get_url_to_form("Error Log", error_log_doc.name) else: error_link = None - log(**{"row": row_idx + 1, "title":'Error for row %s' % (len(row)>1 and frappe.safe_decode(row[1]) or ""), "message": err_msg, - "indicator": "red", "link":error_link}) + + log(**{ + "row": row_idx + 1, + "title": 'Error for row %s' % (len(row)>1 and frappe.safe_decode(row[1]) or ""), + "message": err_msg, + "indicator": "red", + "link":error_link + }) + # data with error to create a new file # include the errored data in the last row as last_error_row_idx will not be updated for the last row if skip_errors: diff --git a/frappe/core/doctype/data_import/log_details.html b/frappe/core/doctype/data_import/log_details.html index ae6c02ac04..aa160a742b 100644 --- a/frappe/core/doctype/data_import/log_details.html +++ b/frappe/core/doctype/data_import/log_details.html @@ -6,19 +6,19 @@