Merge branch 'master' into develop

This commit is contained in:
Nabin Hait 2017-09-12 16:09:19 +05:30
commit 7266e673ac
12 changed files with 34 additions and 19 deletions

View file

@ -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()

View file

@ -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) {

View file

@ -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')

View file

@ -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

View file

@ -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

View file

View file

@ -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'""");

View file

@ -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() + '<br>');
if(!$this.html())
$this.html($this.html() + '<br>');
});
},
onChange: function(value) {

View file

@ -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]; %}
<td>{{ col.formatter
? col.formatter(row._index, col._index, value, col, row, true)

View file

@ -51,6 +51,7 @@ class TestTwoFactor(unittest.TestCase):
'''Should return true if enabled for user.'''
toggle_2fa_all_role(state=True)
self.assertTrue(two_factor_is_enabled_for_(self.user))
self.assertFalse(two_factor_is_enabled_for_("Administrator"))
toggle_2fa_all_role(state=False)
self.assertFalse(two_factor_is_enabled_for_(self.user))
@ -87,7 +88,6 @@ class TestTwoFactor(unittest.TestCase):
_str = render_string_template(_str,args)
self.assertEqual(_str,'Verification Code from Frappe Technologies')
def set_request(**kwargs):
builder = EnvironBuilder(**kwargs)
frappe.local.request = Request(builder.get_environ())

View file

@ -74,6 +74,9 @@ def cache_2fa_data(user, token, otp_secret, tmp_id):
def two_factor_is_enabled_for_(user):
'''Check if 2factor is enabled for user.'''
if user == "Administrator":
return False
if isinstance(user, string_types):
user = frappe.get_doc('User', user)

View file

@ -307,9 +307,11 @@ def search(text, start=0, limit=20, doctype=""):
limit {start}, {limit}'''.format(start=start, limit=limit), (doctype, text), as_dict=True)
for r in results:
if frappe.get_meta(r.doctype).image_field:
doc = frappe.get_doc(r.doctype, r.name)
r.image = doc.get(doc.meta.image_field)
try:
if frappe.get_meta(r.doctype).image_field:
r.image = frappe.db.get_value(r.doctype, r.name, frappe.get_meta(r.doctype).image_field)
except Exception:
frappe.clear_messages()
return results