From ecaf4f6cd1c2f93857e6e05a1e3f94c492ff4561 Mon Sep 17 00:00:00 2001 From: Makarand Bauskar Date: Tue, 1 Aug 2017 11:05:22 +0530 Subject: [PATCH] merged hotfix branch into staging (#3821) * [hotfix] Linked with and List item click (#3803) * [hotfix] Linked with and List item click * Run a single test using Test Runner * Add test for Linked With * [minor] List view fixes * bumped to version 8.6.3 * [Fix] Getting an error datetime.datetime is not iterable during importing purchase invoice data (#3818) * Update quick_entry.js (#3815) Fix typo * bumped to version 8.6.4 --- frappe/__init__.py | 2 +- .../core/doctype/test_runner/test_runner.js | 3 ++- .../core/doctype/test_runner/test_runner.py | 5 +++-- frappe/core/page/data_import_tool/importer.py | 3 ++- frappe/public/js/frappe/form/quick_entry.js | 2 +- frappe/public/js/frappe/list/list_renderer.js | 7 ++++++- frappe/public/js/frappe/ui/filters/filters.js | 1 + frappe/tests/ui/test_linked_with.js | 19 +++++++++++++++++++ frappe/tests/ui/tests.txt | 3 ++- 9 files changed, 37 insertions(+), 8 deletions(-) create mode 100644 frappe/tests/ui/test_linked_with.js diff --git a/frappe/__init__.py b/frappe/__init__.py index 28fca585a7..3b99b44b9e 100644 --- a/frappe/__init__.py +++ b/frappe/__init__.py @@ -14,7 +14,7 @@ import os, sys, importlib, inspect, json from .exceptions import * from .utils.jinja import get_jenv, get_template, render_template, get_email_from_template -__version__ = '8.6.2' +__version__ = '8.6.4' __title__ = "Frappe Framework" local = Local() diff --git a/frappe/core/doctype/test_runner/test_runner.js b/frappe/core/doctype/test_runner/test_runner.js index d5cac7f8a5..87ea09fab7 100644 --- a/frappe/core/doctype/test_runner/test_runner.js +++ b/frappe/core/doctype/test_runner/test_runner.js @@ -11,7 +11,8 @@ frappe.ui.form.on('Test Runner', { // all tests frappe.call({ - method: 'frappe.core.doctype.test_runner.test_runner.get_test_js' + method: 'frappe.core.doctype.test_runner.test_runner.get_test_js', + args: { test_path: frm.doc.module_path } }).always((data) => { $("
").appendTo(wrapper.empty()); frm.events.run_tests(frm, data.message); diff --git a/frappe/core/doctype/test_runner/test_runner.py b/frappe/core/doctype/test_runner/test_runner.py index c09d75ae4f..2961e9f38b 100644 --- a/frappe/core/doctype/test_runner/test_runner.py +++ b/frappe/core/doctype/test_runner/test_runner.py @@ -10,9 +10,10 @@ class TestRunner(Document): pass @frappe.whitelist() -def get_test_js(): +def get_test_js(test_path=None): '''Get test + data for app, example: app/tests/ui/test_name.js''' - test_path = frappe.db.get_single_value('Test Runner', 'module_path') + if not test_path: + test_path = frappe.db.get_single_value('Test Runner', 'module_path') test_js = [] # split diff --git a/frappe/core/page/data_import_tool/importer.py b/frappe/core/page/data_import_tool/importer.py index 3514c1b877..dd4a872111 100644 --- a/frappe/core/page/data_import_tool/importer.py +++ b/frappe/core/page/data_import_tool/importer.py @@ -118,7 +118,8 @@ def upload(rows = None, submit_after_import=None, ignore_encoding_errors=False, elif fieldtype in ("Float", "Currency", "Percent"): d[fieldname] = flt(d[fieldname]) elif fieldtype == "Date": - d[fieldname] = getdate(parse_date(d[fieldname])) if d[fieldname] else None + if d[fieldname] and isinstance(d[fieldname], basestring): + d[fieldname] = getdate(parse_date(d[fieldname])) elif fieldtype == "Datetime": if d[fieldname]: if " " in d[fieldname]: diff --git a/frappe/public/js/frappe/form/quick_entry.js b/frappe/public/js/frappe/form/quick_entry.js index 299f14176d..ffce4dceff 100644 --- a/frappe/public/js/frappe/form/quick_entry.js +++ b/frappe/public/js/frappe/form/quick_entry.js @@ -141,7 +141,7 @@ frappe.ui.form.QuickEntryForm = Class.extend({ frappe.ui.form.update_calling_link(me.dialog.doc); } else { if(me.after_insert) { - me.after_insert(me.dialig.doc); + me.after_insert(me.dialog.doc); } else { me.open_from_if_not_list(); } diff --git a/frappe/public/js/frappe/list/list_renderer.js b/frappe/public/js/frappe/list/list_renderer.js index 02940e1bec..65f52c910c 100644 --- a/frappe/public/js/frappe/list/list_renderer.js +++ b/frappe/public/js/frappe/list/list_renderer.js @@ -271,7 +271,10 @@ frappe.views.ListRenderer = Class.extend({ setup_filterable: function () { var me = this; + + this.list_view.wrapper && this.list_view.wrapper.on('click', '.result-list .filterable', function (e) { + e.stopPropagation(); var filters = $(this).attr('data-filter').split('|'); var added = false; @@ -294,7 +297,9 @@ frappe.views.ListRenderer = Class.extend({ me.list_view.refresh(true); } }); - this.wrapper.on('click', '.list-item', function (e) { + + this.list_view.wrapper && + this.list_view.wrapper.on('click', '.list-item', function (e) { // don't open in case of checkbox, like, filterable if ($(e.target).hasClass('filterable') || $(e.target).hasClass('octicon-heart') diff --git a/frappe/public/js/frappe/ui/filters/filters.js b/frappe/public/js/frappe/ui/filters/filters.js index b338d23f3d..0d74e61b84 100644 --- a/frappe/public/js/frappe/ui/filters/filters.js +++ b/frappe/public/js/frappe/ui/filters/filters.js @@ -87,6 +87,7 @@ frappe.ui.FilterList = Class.extend({ } var filter = this.push_new_filter(doctype, fieldname, condition, value); + if (!filter) return; if(this.wrapper.find('.clear-filters').hasClass("hide")) { this.wrapper.find('.clear-filters').removeClass("hide"); diff --git a/frappe/tests/ui/test_linked_with.js b/frappe/tests/ui/test_linked_with.js new file mode 100644 index 0000000000..aeaced2d19 --- /dev/null +++ b/frappe/tests/ui/test_linked_with.js @@ -0,0 +1,19 @@ +QUnit.module('form'); + +QUnit.test("Test Linked With", function(assert) { + assert.expect(2); + const done = assert.async(); + + frappe.run_serially([ + () => frappe.set_route('Form', 'Module Def', 'Contacts'), + () => frappe.tests.click_page_head_item('Menu'), + () => frappe.tests.click_dropdown_item('Links'), + () => frappe.timeout(4), + () => { + assert.equal(cur_dialog.title, 'Linked With', 'Linked with dialog is opened'); + const link_tables_count = cur_dialog.$wrapper.find('.list-item-table').length; + assert.equal(link_tables_count, 2, 'Two DocTypes are linked with Contacts'); + }, + done + ]); +}); \ No newline at end of file diff --git a/frappe/tests/ui/tests.txt b/frappe/tests/ui/tests.txt index ce0c91c77e..0ee0789258 100644 --- a/frappe/tests/ui/tests.txt +++ b/frappe/tests/ui/tests.txt @@ -6,4 +6,5 @@ frappe/tests/ui/test_calendar_view.js frappe/tests/ui/test_kanban/test_kanban_creation.js frappe/tests/ui/test_kanban/test_kanban_view.js frappe/tests/ui/test_kanban/test_kanban_filters.js -frappe/tests/ui/test_kanban/test_kanban_column.js \ No newline at end of file +frappe/tests/ui/test_kanban/test_kanban_column.js +frappe/tests/ui/test_linked_with.js \ No newline at end of file