diff --git a/frappe/core/doctype/user_permission/user_permission.json b/frappe/core/doctype/user_permission/user_permission.json index 2e67de5ce0..08d70ee774 100644 --- a/frappe/core/doctype/user_permission/user_permission.json +++ b/frappe/core/doctype/user_permission/user_permission.json @@ -1,7 +1,7 @@ { "allow_copy": 0, "allow_guest_to_view": 0, - "allow_import": 0, + "allow_import": 1, "allow_rename": 0, "beta": 0, "creation": "2017-07-17 14:25:27.881871", @@ -148,7 +148,7 @@ "issingle": 0, "istable": 0, "max_attachments": 0, - "modified": "2017-07-27 22:55:58.647315", + "modified": "2017-10-24 13:25:33.258794", "modified_by": "Administrator", "module": "Core", "name": "User Permission", diff --git a/frappe/public/js/frappe/form/controls/barcode.js b/frappe/public/js/frappe/form/controls/barcode.js index 8d17b59bdb..57cf4b9801 100644 --- a/frappe/public/js/frappe/form/controls/barcode.js +++ b/frappe/public/js/frappe/form/controls/barcode.js @@ -27,8 +27,30 @@ frappe.ui.form.ControlBarcode = frappe.ui.form.ControlData.extend({ get_barcode_html(value) { // Get svg const svg = this.barcode_area.find('svg')[0]; - JsBarcode(svg, value, {height: 40}); + JsBarcode(svg, value, this.get_options(value)); $(svg).attr('data-barcode-value', value); return this.barcode_area.html(); + }, + + get_options(value) { + // get JsBarcode options + let options = JSON.parse('{ "height" : 40 }'); + if (this.isValidJson(this.df.options)) { + options = JSON.parse(this.df.options); + if (options.format && options.format === "EAN") { + options.format = value.length == 8 ? "EAN8" : "EAN13"; + } + } + return options; + }, + + isValidJson(jsonData) { + try { + JSON.parse(jsonData); + return true; + } catch (e) { + return false; + } } + }); diff --git a/frappe/tests/ui/test_control_html.js b/frappe/tests/ui/test_control_html.js index 8c0276508c..0cb70cc4fd 100644 --- a/frappe/tests/ui/test_control_html.js +++ b/frappe/tests/ui/test_control_html.js @@ -20,7 +20,7 @@ QUnit.test("Test ControlHTML", function(assert) { {dt: 'ToDo'}, {fieldtype: 'HTML'}, {label: random_name + "_template"}, - {options: '

Test {%= doc.status %}

'} + {options: '

Test {{ doc.status }}

'} ]); }, () => frappe.set_route('List', 'ToDo'), @@ -34,16 +34,22 @@ QUnit.test("Test ControlHTML", function(assert) { }, () => { const control = $(`.frappe-control[data-fieldname="${random_name}"]`)[0]; + return assert.ok(control.innerHTML === '

Test

'); }, () => { const control = $(`.frappe-control[data-fieldname="${random_name}_template"]`)[0]; + // refresh input must be called independently + cur_frm.get_field(`${random_name}_template`).refresh_input(); + return assert.ok(control.innerHTML === '

Test Open

'); }, () => frappe.tests.set_control("status", "Closed"), () => frappe.timeout(1), () => { const control = $(`.frappe-control[data-fieldname="${random_name}_template"]`)[0]; + // refresh input must be called independently + cur_frm.get_field(`${random_name}_template`).refresh_input(); return assert.ok(control.innerHTML === '

Test Closed

'); }, () => done() diff --git a/frappe/utils/data.py b/frappe/utils/data.py index 84780ce79e..c1e498fc27 100644 --- a/frappe/utils/data.py +++ b/frappe/utils/data.py @@ -218,7 +218,11 @@ def formatdate(string_date=None, format_string=None): * mm-dd-yyyy * dd/mm/yyyy """ - date = getdate(string_date) if string_date else now_datetime().date() + + if not string_date: + return '' + + date = getdate(string_date) if not format_string: format_string = get_user_format().replace("mm", "MM")