Просмотр исходного кода

Merge branch 'hotfix'

version-14
mbauskar 8 лет назад
Родитель
Сommit
73094b2e87
4 измененных файлов: 31 добавлений и 6 удалений
  1. +1
    -1
      frappe/__init__.py
  2. +10
    -4
      frappe/core/doctype/doctype/doctype.py
  3. +18
    -0
      frappe/core/doctype/doctype/test_doctype.py
  4. +2
    -1
      frappe/public/js/frappe/ui/page.js

+ 1
- 1
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()


+ 10
- 4
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)


+ 18
- 0
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)

+ 2
- 1
frappe/public/js/frappe/ui/page.js Просмотреть файл

@@ -248,7 +248,7 @@ frappe.ui.Page = Class.extend({
$group = $('<div class="btn-group" data-label="'+label+'" style="margin-left: 10px;">\
<button type="button" class="btn btn-default dropdown-toggle btn-xs" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">\
'+label+' <span class="caret"></span></button>\
<ul class="dropdown-menu" style="margin-top: -8px;"></ul></div>').appendTo(this.inner_toolbar.removeClass("hide"));
<ul class="dropdown-menu" style="margin-top: -8px;"></ul></div>').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 $('<li><a>'+label+'</a></li>')
.on('click', _action)
.appendTo($group.find(".dropdown-menu"));


Загрузка…
Отмена
Сохранить