@@ -14,7 +14,7 @@ import os, sys, importlib, inspect, json | |||||
from .exceptions import * | from .exceptions import * | ||||
from .utils.jinja import get_jenv, get_template, render_template, get_email_from_template | from .utils.jinja import get_jenv, get_template, render_template, get_email_from_template | ||||
__version__ = '10.0.19' | |||||
__version__ = '10.0.20' | |||||
__title__ = "Frappe Framework" | __title__ = "Frappe Framework" | ||||
local = Local() | local = Local() | ||||
@@ -60,7 +60,8 @@ frappe.ui.form.on('Data Import', { | |||||
}); | }); | ||||
} | } | ||||
if (frm.doc.reference_doctype && frm.doc.import_file && frm.doc.total_rows && frm.doc.docstatus === 0) { | |||||
if (frm.doc.reference_doctype && frm.doc.import_file && frm.doc.total_rows && | |||||
frm.doc.docstatus === 0 && (!frm.doc.import_status || frm.doc.import_status=="Failed")) { | |||||
frm.page.set_primary_action(__("Start Import"), function() { | frm.page.set_primary_action(__("Start Import"), function() { | ||||
frappe.call({ | frappe.call({ | ||||
method: "frappe.core.doctype.data_import.data_import.import_data", | method: "frappe.core.doctype.data_import.data_import.import_data", | ||||
@@ -33,8 +33,11 @@ def import_data(data_import): | |||||
frappe.db.set_value("Data Import", data_import, "import_status", "In Progress", update_modified=False) | frappe.db.set_value("Data Import", data_import, "import_status", "In Progress", update_modified=False) | ||||
frappe.publish_realtime("data_import_progress", {"progress": "0", | frappe.publish_realtime("data_import_progress", {"progress": "0", | ||||
"data_import": data_import, "reload": True}, user=frappe.session.user) | "data_import": data_import, "reload": True}, user=frappe.session.user) | ||||
enqueue(upload, queue='default', timeout=6000, event='data_import', | |||||
data_import_doc=data_import, from_data_import="Yes", 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) | |||||
def import_doc(path, overwrite=False, ignore_links=False, ignore_insert=False, | def import_doc(path, overwrite=False, ignore_links=False, ignore_insert=False, | ||||
@@ -281,8 +281,11 @@ def upload(rows = None, submit_after_import=None, ignore_encoding_errors=False, | |||||
start_row = get_start_row() | start_row = get_start_row() | ||||
header = rows[:start_row] | header = rows[:start_row] | ||||
data = rows[start_row:] | data = rows[start_row:] | ||||
doctype = get_header_row(get_data_keys_definition().main_table)[1] | |||||
columns = filter_empty_columns(get_header_row(get_data_keys_definition().columns)[1:]) | |||||
try: | |||||
doctype = get_header_row(get_data_keys_definition().main_table)[1] | |||||
columns = filter_empty_columns(get_header_row(get_data_keys_definition().columns)[1:]) | |||||
except: | |||||
frappe.throw(_("Cannot change header content")) | |||||
doctypes = [] | doctypes = [] | ||||
column_idx_to_fieldname = {} | column_idx_to_fieldname = {} | ||||
column_idx_to_fieldtype = {} | column_idx_to_fieldtype = {} | ||||
@@ -477,8 +477,8 @@ frappe.ui.form.Timeline = Class.extend({ | |||||
parts.push(__('{0} from {1} to {2} in row #{3}', [ | parts.push(__('{0} from {1} to {2} in row #{3}', [ | ||||
frappe.meta.get_label(me.frm.fields_dict[row[0]].grid.doctype, | frappe.meta.get_label(me.frm.fields_dict[row[0]].grid.doctype, | ||||
p[0]), | p[0]), | ||||
(frappe.ellipsis(p[1], 40) || '""').bold(), | |||||
(frappe.ellipsis(p[2], 40) || '""').bold(), | (frappe.ellipsis(p[2], 40) || '""').bold(), | ||||
(frappe.ellipsis(p[1], 40) || '""').bold(), | |||||
row[1] | row[1] | ||||
])); | ])); | ||||
} | } | ||||
@@ -171,8 +171,6 @@ frappe.ui.form.Grid = Class.extend({ | |||||
// redraw | // redraw | ||||
var _scroll_y = $(document).scrollTop(); | var _scroll_y = $(document).scrollTop(); | ||||
this.make_head(); | this.make_head(); | ||||
// to hide checkbox if grid is not editable | |||||
this.header_row && this.header_row.toggle_check(); | |||||
if(!this.grid_rows) { | if(!this.grid_rows) { | ||||
this.grid_rows = []; | this.grid_rows = []; | ||||
@@ -121,8 +121,6 @@ frappe.ui.form.GridRow = Class.extend({ | |||||
if(this.grid_form) { | if(this.grid_form) { | ||||
this.grid_form.layout && this.grid_form.layout.refresh(this.doc); | this.grid_form.layout && this.grid_form.layout.refresh(this.doc); | ||||
} | } | ||||
this.toggle_check(); | |||||
}, | }, | ||||
render_template: function() { | render_template: function() { | ||||
this.set_row_index(); | this.set_row_index(); | ||||
@@ -596,11 +594,5 @@ frappe.ui.form.GridRow = Class.extend({ | |||||
}, | }, | ||||
toggle_editable: function(fieldname, editable) { | toggle_editable: function(fieldname, editable) { | ||||
this.set_field_property(fieldname, 'read_only', editable ? 0 : 1); | this.set_field_property(fieldname, 'read_only', editable ? 0 : 1); | ||||
}, | |||||
toggle_check: function() { | |||||
// to hide checkbox if grid is not editable | |||||
this.wrapper | |||||
.find('.grid-row-check') | |||||
.css("display", this.grid.is_editable()? 'block':'none'); | |||||
} | } | ||||
}); | }); |
@@ -13,7 +13,7 @@ | |||||
</span> | </span> | ||||
</div> | </div> | ||||
<div class="col-sm-4 hidden-xs list-col ellipsis h6 text-muted"> | <div class="col-sm-4 hidden-xs list-col ellipsis h6 text-muted"> | ||||
<span class="filterable text-muted" data-filter="sender,=,{%= data.sender %} inbox-value"> | |||||
<span class="filterable text-muted inbox-value" data-filter="sender,=,{%= data.sender %}"> | |||||
{%= is_sent_emails? data.recipients: data.sender %} | {%= is_sent_emails? data.recipients: data.sender %} | ||||
</span> | </span> | ||||
</div> | </div> | ||||