From 42e8633842aadd38721e53725b622562a272e430 Mon Sep 17 00:00:00 2001 From: tunde Date: Wed, 9 Aug 2017 09:01:05 +0100 Subject: [PATCH 1/3] unhide the inner toolbar only when a button is added --- frappe/public/js/frappe/ui/page.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/frappe/public/js/frappe/ui/page.js b/frappe/public/js/frappe/ui/page.js index 6ed3037e4b..aebb74c4ea 100644 --- a/frappe/public/js/frappe/ui/page.js +++ b/frappe/public/js/frappe/ui/page.js @@ -248,7 +248,7 @@ frappe.ui.Page = Class.extend({ $group = $('
\ \ -
').appendTo(this.inner_toolbar.removeClass("hide")); + ').appendTo(this.inner_toolbar); } return $group; }, @@ -280,6 +280,7 @@ frappe.ui.Page = Class.extend({ }; if(group) { var $group = this.get_inner_group_button(group); + $(this.inner_toolbar).removeClass("hide"); return $('
  • '+label+'
  • ') .on('click', _action) .appendTo($group.find(".dropdown-menu")); From 5c8bd63a7c6980a9fac6ec297f99699fcc0d982e Mon Sep 17 00:00:00 2001 From: mbauskar Date: Fri, 11 Aug 2017 11:44:11 +0530 Subject: [PATCH 2/3] [hotfix] don't allow no value fields in the search fields --- frappe/core/doctype/doctype/doctype.py | 14 ++++++++++---- frappe/core/doctype/doctype/test_doctype.py | 18 ++++++++++++++++++ 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/frappe/core/doctype/doctype/doctype.py b/frappe/core/doctype/doctype/doctype.py index 40207a24dd..68d1e4831e 100644 --- a/frappe/core/doctype/doctype/doctype.py +++ b/frappe/core/doctype/doctype/doctype.py @@ -512,14 +512,20 @@ def validate_fields(meta): else: frappe.throw(_("Fold can not be at the end of the form")) - def check_search_fields(meta): + def check_search_fields(meta, fields): """Throw exception if `search_fields` don't contain valid fields.""" if not meta.search_fields: return - for fieldname in (meta.search_fields or "").split(","): + # No value fields should not be included in search field + search_fields = [field.strip() for field in (meta.search_fields or "").split(",")] + fieldtype_mapper = { field.fieldname: field.fieldtype \ + for field in filter(lambda field: field.fieldname in search_fields, fields) } + + for fieldname in search_fields: fieldname = fieldname.strip() - if fieldname not in fieldname_list: + if (fieldtype_mapper.get(fieldname) in no_value_fields) or \ + (fieldname not in fieldname_list): frappe.throw(_("Search field {0} is not valid").format(fieldname)) def check_title_field(meta): @@ -616,7 +622,7 @@ def validate_fields(meta): check_unique_and_text(d) check_fold(fields) - check_search_fields(meta) + check_search_fields(meta, fields) check_title_field(meta) check_timeline_field(meta) check_is_published_field(meta) diff --git a/frappe/core/doctype/doctype/test_doctype.py b/frappe/core/doctype/doctype/test_doctype.py index 6a0794c7a1..81320c2f38 100644 --- a/frappe/core/doctype/doctype/test_doctype.py +++ b/frappe/core/doctype/doctype/test_doctype.py @@ -54,3 +54,21 @@ class TestDocType(unittest.TestCase): doc2.insert() doc1.delete() doc2.delete() + + def test_validate_search_fields(self): + doc = self.new_doctype("Test Search Fields") + doc.search_fields = "some_fieldname" + doc.insert() + self.assertEqual(doc.name, "Test Search Fields") + + # check if invalid fieldname is allowed or not + doc.search_fields = "some_fieldname_1" + self.assertRaises(frappe.ValidationError, doc.save) + + # check if no value fields are allowed in search fields + field = doc.append("fields", {}) + field.fieldname = "some_html_field" + field.fieldtype = "HTML" + field.label = "Some HTML Field" + doc.search_fields = "some_fieldname,some_html_field" + self.assertRaises(frappe.ValidationError, doc.save) \ No newline at end of file From 88057304b0ce122a6f6d2fabd17eedbca69f2993 Mon Sep 17 00:00:00 2001 From: mbauskar Date: Mon, 14 Aug 2017 09:59:42 +0600 Subject: [PATCH 3/3] bumped to version 8.7.4 --- frappe/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/__init__.py b/frappe/__init__.py index a4c721c8ab..34eb1c0792 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.7.3' +__version__ = '8.7.4' __title__ = "Frappe Framework" local = Local()