From 8f21ca4997ddb7323ce2f774662fff27897b1441 Mon Sep 17 00:00:00 2001 From: Faris Ansari Date: Sat, 18 Apr 2020 13:47:06 +0530 Subject: [PATCH 1/7] fix: Ability to resize expand/collapse code field --- frappe/public/js/frappe/form/controls/code.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/frappe/public/js/frappe/form/controls/code.js b/frappe/public/js/frappe/form/controls/code.js index 0648ad6e22..bdf36b706a 100644 --- a/frappe/public/js/frappe/form/controls/code.js +++ b/frappe/public/js/frappe/form/controls/code.js @@ -9,6 +9,12 @@ frappe.ui.form.ControlCode = frappe.ui.form.ControlText.extend({ this.ace_editor_target = $('
') .appendTo(this.input_area); + this.expanded = false; + this.$expand_button = $(``).click(() => { + this.expanded = !this.expanded; + this.refresh_height(); + }).insertAfter(this.ace_editor_target); + // styling this.ace_editor_target.addClass('border rounded'); this.ace_editor_target.css('height', 300); @@ -26,6 +32,11 @@ frappe.ui.form.ControlCode = frappe.ui.form.ControlText.extend({ }, 300)); }, + refresh_height() { + this.ace_editor_target.css('height', this.expanded ? 600 : 300); + this.editor.resize(); + }, + set_language() { const language_map = { 'Javascript': 'ace/mode/javascript', From e2eea4447b60a3358f305ea57d1de13128324f0e Mon Sep 17 00:00:00 2001 From: prssanna Date: Sat, 18 Apr 2020 21:20:45 +0530 Subject: [PATCH 2/7] fix(Reports): don't export hidden columns in reports --- frappe/desk/query_report.py | 1 + frappe/public/js/frappe/views/reports/query_report.js | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/frappe/desk/query_report.py b/frappe/desk/query_report.py index aaf859e7fd..a08667161a 100644 --- a/frappe/desk/query_report.py +++ b/frappe/desk/query_report.py @@ -299,6 +299,7 @@ def export_query(): _("You can try changing the filters of your report.")) return + data.columns = [col for col in data.columns if not col.get('hidden')] columns = get_columns_dict(data.columns) from frappe.utils.xlsxutils import make_xlsx diff --git a/frappe/public/js/frappe/views/reports/query_report.js b/frappe/public/js/frappe/views/reports/query_report.js index 08da956072..07616886f2 100644 --- a/frappe/public/js/frappe/views/reports/query_report.js +++ b/frappe/public/js/frappe/views/reports/query_report.js @@ -1084,7 +1084,11 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList { ], ({ file_format, include_indentation }) => { this.make_access_log('Export', file_format); if (file_format === 'CSV') { - const column_row = this.columns.map(col => col.label); + const column_row = this.columns.map(col => { + if (!col.hidden) { + return col.label; + } + }); const data = this.get_data_for_csv(include_indentation); const out = [column_row].concat(data); From 8dafe6256cfdf56f595f68246417ea7fbb8abcc5 Mon Sep 17 00:00:00 2001 From: prssanna Date: Sat, 18 Apr 2020 21:32:16 +0530 Subject: [PATCH 3/7] fix: check if column is a dict --- frappe/desk/query_report.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frappe/desk/query_report.py b/frappe/desk/query_report.py index a08667161a..f994dc0d30 100644 --- a/frappe/desk/query_report.py +++ b/frappe/desk/query_report.py @@ -299,7 +299,7 @@ def export_query(): _("You can try changing the filters of your report.")) return - data.columns = [col for col in data.columns if not col.get('hidden')] + data.columns = [col for col in data.columns if isinstance(col, dict) and not col.get('hidden')] columns = get_columns_dict(data.columns) from frappe.utils.xlsxutils import make_xlsx @@ -311,7 +311,7 @@ def export_query(): frappe.response['type'] = 'binary' -def build_xlsx_data(columns, data, visible_idx,include_indentation): +def build_xlsx_data(columns, data, visible_idx, include_indentation): result = [[]] # add column headings From 191165f704d7b682001617ee994befa66306b7c5 Mon Sep 17 00:00:00 2001 From: prssanna Date: Sun, 19 Apr 2020 00:34:21 +0530 Subject: [PATCH 4/7] fix: use .reduce to filter out hidden columns --- frappe/public/js/frappe/views/reports/query_report.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/frappe/public/js/frappe/views/reports/query_report.js b/frappe/public/js/frappe/views/reports/query_report.js index 07616886f2..be24273cb5 100644 --- a/frappe/public/js/frappe/views/reports/query_report.js +++ b/frappe/public/js/frappe/views/reports/query_report.js @@ -1084,11 +1084,12 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList { ], ({ file_format, include_indentation }) => { this.make_access_log('Export', file_format); if (file_format === 'CSV') { - const column_row = this.columns.map(col => { + const column_row = this.columns.reduce((acc, col) => { if (!col.hidden) { - return col.label; + acc.push(col.label); } - }); + return acc; + }, []); const data = this.get_data_for_csv(include_indentation); const out = [column_row].concat(data); From 6f1caf101f4caed049e6efa200b086bfc0577f9b Mon Sep 17 00:00:00 2001 From: Aditya Hase Date: Mon, 20 Apr 2020 12:54:30 +0530 Subject: [PATCH 5/7] fix: Check if Event Consumer exists before checking for consumers the logic for event streaming has been hardcoded into `document.py` Scenario: a site (say, v12) backup needs to be restored on a v13 bench and then updated Solution: use `bench migrate`; works flawlessly. However, if this site has an app installed that isn't available on the v13 bench, then bench migrate fails. Also, `bench remove-from-installed-apps` fails, because of the absence of "Event Consumer" --- frappe/model/document.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/frappe/model/document.py b/frappe/model/document.py index 03b21ea667..f2495e9e20 100644 --- a/frappe/model/document.py +++ b/frappe/model/document.py @@ -1318,6 +1318,9 @@ def make_event_update_log(doc, update_type): def check_doctype_has_consumers(doctype): """Check if doctype has event consumers for event streaming""" + if not frappe.db.exists("DocType", "Event Consumer"): + return False + event_consumers = frappe.get_all('Event Consumer') for event_consumer in event_consumers: consumer = frappe.get_doc('Event Consumer', event_consumer.name) From f6f55fa0ad682aee77a93c4af4b6e571244b6d8f Mon Sep 17 00:00:00 2001 From: Aditya Hase Date: Mon, 20 Apr 2020 13:32:18 +0530 Subject: [PATCH 6/7] fix(background jobs): Show method name on Background Jobs page. (#10014) After https://github.com/frappe/frappe/pull/8486 background jobs page doesn't provide any information. --- frappe/core/page/background_jobs/background_jobs.py | 1 + 1 file changed, 1 insertion(+) diff --git a/frappe/core/page/background_jobs/background_jobs.py b/frappe/core/page/background_jobs/background_jobs.py index c8a2352968..4a94de4ace 100644 --- a/frappe/core/page/background_jobs/background_jobs.py +++ b/frappe/core/page/background_jobs/background_jobs.py @@ -28,6 +28,7 @@ def get_info(show_failed=False): if j.kwargs.get('site')==frappe.local.site: jobs.append({ 'job_name': j.kwargs.get('kwargs', {}).get('playbook_method') \ + or j.kwargs.get('kwargs', {}).get('job_type') \ or str(j.kwargs.get('job_name')), 'status': j.get_status(), 'queue': name, 'creation': format_datetime(convert_utc_to_user_timezone(j.created_at)), From 83a2b354d96b6236e7693636566659e0a39baac0 Mon Sep 17 00:00:00 2001 From: prssanna Date: Mon, 20 Apr 2020 20:45:25 +0530 Subject: [PATCH 7/7] fix: MultiSelectList field being rendered multiple times in dialog --- frappe/public/js/frappe/form/controls/multiselect_list.js | 1 + 1 file changed, 1 insertion(+) diff --git a/frappe/public/js/frappe/form/controls/multiselect_list.js b/frappe/public/js/frappe/form/controls/multiselect_list.js index 3e8dc21dca..cd86bdd767 100644 --- a/frappe/public/js/frappe/form/controls/multiselect_list.js +++ b/frappe/public/js/frappe/form/controls/multiselect_list.js @@ -18,6 +18,7 @@ frappe.ui.form.ControlMultiSelectList = frappe.ui.form.ControlData.extend({ this.$list_wrapper = $(template); this.$input = $(''); this.input = this.$input.get(0); + this.has_input = true; this.$list_wrapper.prependTo(this.input_area); this.$filter_input = this.$list_wrapper.find('input'); this.$list_wrapper.on('click', '.dropdown-menu', e => {