瀏覽代碼

Merge branch 'develop' into star-rating-dev

version-14
Suraj Shetty 3 年之前
committed by GitHub
父節點
當前提交
83be5f934b
沒有發現已知的金鑰在資料庫的簽署中 GPG Key ID: 4AEE18F83AFDEB23
共有 4 個文件被更改,包括 43 次插入3 次删除
  1. +13
    -1
      frappe/core/doctype/server_script/server_script_utils.py
  2. +5
    -0
      frappe/model/meta.py
  3. +2
    -1
      frappe/utils/data.py
  4. +23
    -1
      frappe/utils/safe_exec.py

+ 13
- 1
frappe/core/doctype/server_script/server_script_utils.py 查看文件

@@ -41,7 +41,19 @@ def run_server_script_for_doc_event(doc, event):
if scripts:
# run all scripts for this doctype + event
for script_name in scripts:
frappe.get_doc('Server Script', script_name).execute_doc(doc)
try:
frappe.get_doc('Server Script', script_name).execute_doc(doc)
except Exception as e:
message = frappe._('Error executing Server Script {0}. Open Browser Console to see traceback.').format(
frappe.utils.get_link_to_form('Server Script', script_name)
)
exception = type(e)
if getattr(frappe, 'request', None):
# all exceptions throw 500 which is internal server error
# however server script error is a user error
# so we should throw 417 which is expectation failed
exception.http_status_code = 417
frappe.throw(title=frappe._('Server Script Error'), msg=message, exc=exception)

def get_server_script_map():
# fetch cached server script methods


+ 5
- 0
frappe/model/meta.py 查看文件

@@ -120,6 +120,11 @@ class Meta(Document):
or (not no_nulls and value is None)):
out[key] = value

# set empty lists for unset table fields
for table_field in DOCTYPE_TABLE_FIELDS:
if not out.get(table_field.fieldname):
out[table_field.fieldname] = []

return out

return serialize(self)


+ 2
- 1
frappe/utils/data.py 查看文件

@@ -882,7 +882,8 @@ number_format_info = {
"#,##,###.##": (".", ",", 2),
"#,###.###": (".", ",", 3),
"#.###": ("", ".", 0),
"#,###": ("", ",", 0)
"#,###": ("", ",", 0),
"#.########": (".", "", 8)
}

def get_number_format_info(format):


+ 23
- 1
frappe/utils/safe_exec.py 查看文件

@@ -184,10 +184,32 @@ def get_safe_globals():
# allow iterators and list comprehension
out._getiter_ = iter
out._iter_unpack_sequence_ = RestrictedPython.Guards.guarded_iter_unpack_sequence
out.sorted = sorted

# add common python builtins
out.update(get_python_builtins())

return out

def get_python_builtins():
return {
'abs': abs,
'all': all,
'any': any,
'bool': bool,
'dict': dict,
'enumerate': enumerate,
'isinstance': isinstance,
'issubclass': issubclass,
'list': list,
'max': max,
'min': min,
'range': range,
'set': set,
'sorted': sorted,
'sum': sum,
'tuple': tuple,
}

def get_hooks(hook=None, default=None, app_name=None):
hooks = frappe.get_hooks(hook=hook, default=default, app_name=app_name)
return copy.deepcopy(hooks)


Loading…
取消
儲存