diff --git a/frappe/__init__.py b/frappe/__init__.py
index 63dc00c6c8..bb1315091c 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.10.4'
+__version__ = '8.10.5'
__title__ = "Frappe Framework"
local = Local()
diff --git a/frappe/core/doctype/doctype/doctype.js b/frappe/core/doctype/doctype/doctype.js
index c44fff15d5..0374026855 100644
--- a/frappe/core/doctype/doctype/doctype.js
+++ b/frappe/core/doctype/doctype/doctype.js
@@ -13,9 +13,12 @@
frappe.ui.form.on('DocType', {
refresh: function(frm) {
- if(frm.is_new() && (frappe.session.user !== "Administrator" || !frappe.boot.developer_mode)) {
- frm.set_value("custom", 1);
+ if(frappe.session.user !== "Administrator" || !frappe.boot.developer_mode) {
+ if(frm.is_new()) {
+ frm.set_value("custom", 1);
+ }
frm.toggle_enable("custom", 0);
+ frm.toggle_enable("beta", 0);
}
if(!frappe.boot.developer_mode && !frm.doc.custom) {
diff --git a/frappe/desk/reportview.py b/frappe/desk/reportview.py
index 1ae010fd8e..cacfa25e9a 100644
--- a/frappe/desk/reportview.py
+++ b/frappe/desk/reportview.py
@@ -152,8 +152,8 @@ def export_query():
writer = csv.writer(f)
for r in data:
# encode only unicode type strings and not int, floats etc.
- writer.writerow(map(lambda v: isinstance(v, string_types) and
- handle_html(frappe.as_unicode(v)) or v, r))
+ writer.writerow([handle_html(frappe.as_unicode(v)).encode('utf-8') \
+ if isinstance(v, string_types) else v for v in r])
f.seek(0)
frappe.response['result'] = text_type(f.read(), 'utf-8')
diff --git a/frappe/model/delete_doc.py b/frappe/model/delete_doc.py
index 1f0d894f97..f528a4103c 100644
--- a/frappe/model/delete_doc.py
+++ b/frappe/model/delete_doc.py
@@ -244,6 +244,14 @@ def delete_dynamic_links(doctype, name):
frappe.db.sql('''delete from `tabEmail Unsubscribe`
where reference_doctype=%s and reference_name=%s''', (doctype, name))
+ # delete shares
+ delete_doc("DocShare", frappe.db.sql_list("""select name from `tabDocShare`
+ where share_doctype=%s and share_name=%s""", (doctype, name)),
+ ignore_on_trash=True, force=True)
+
+ # delete versions
+ frappe.db.sql('delete from tabVersion where ref_doctype=%s and docname=%s', (doctype, name))
+
# delete comments
frappe.db.sql("""delete from `tabCommunication`
where
@@ -268,14 +276,6 @@ def delete_dynamic_links(doctype, name):
set timeline_doctype=null, timeline_name=null
where timeline_doctype=%s and timeline_name=%s""", (doctype, name))
- # delete shares
- delete_doc("DocShare", frappe.db.sql_list("""select name from `tabDocShare`
- where share_doctype=%s and share_name=%s""", (doctype, name)),
- ignore_on_trash=True, force=True)
-
- # delete versions
- frappe.db.sql('delete from tabVersion where ref_doctype=%s and docname=%s', (doctype, name))
-
def insert_feed(doc):
from frappe.utils import get_fullname
diff --git a/frappe/patches.txt b/frappe/patches.txt
index ce0a749126..28bc5cb574 100644
--- a/frappe/patches.txt
+++ b/frappe/patches.txt
@@ -192,3 +192,4 @@ frappe.patches.v8_5.delete_email_group_member_with_invalid_emails
frappe.patches.v8_x.update_user_permission
frappe.patches.v8_5.patch_event_colors
frappe.patches.v8_7.update_email_queue_status
+frappe.patches.v8_10.delete_static_web_page_from_global_search
diff --git a/frappe/patches/v8_10/__init__.py b/frappe/patches/v8_10/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/frappe/patches/v8_10/delete_static_web_page_from_global_search.py b/frappe/patches/v8_10/delete_static_web_page_from_global_search.py
new file mode 100644
index 0000000000..336562c157
--- /dev/null
+++ b/frappe/patches/v8_10/delete_static_web_page_from_global_search.py
@@ -0,0 +1,5 @@
+from __future__ import unicode_literals
+import frappe
+
+def execute():
+ frappe.db.sql("""delete from `__global_search` where doctype='Static Web Page'""");
\ No newline at end of file
diff --git a/frappe/public/js/frappe/form/controls/text_editor.js b/frappe/public/js/frappe/form/controls/text_editor.js
index a249a9c0ea..1110fee7fc 100644
--- a/frappe/public/js/frappe/form/controls/text_editor.js
+++ b/frappe/public/js/frappe/form/controls/text_editor.js
@@ -46,7 +46,8 @@ frappe.ui.form.ControlTextEditor = frappe.ui.form.ControlCode.extend({
// this function is executed only once
$(".note-editable[contenteditable='true']").one('focus', function() {
var $this = $(this);
- $this.html($this.html() + '
');
+ if(!$this.html())
+ $this.html($this.html() + '
');
});
},
onChange: function(value) {
diff --git a/frappe/public/js/frappe/views/reports/print_grid.html b/frappe/public/js/frappe/views/reports/print_grid.html
index daae4fd030..e30f01458d 100644
--- a/frappe/public/js/frappe/views/reports/print_grid.html
+++ b/frappe/public/js/frappe/views/reports/print_grid.html
@@ -24,7 +24,7 @@
{% for col in columns %}
{% if col.name && col._id !== "_check" %}
- {% var value = col.fieldname ? row[col.fieldname] : row[col.id]; %}
+ {% var value = col.fieldname ? row[col.fieldname] : row[col.field]; %}