Merge branch 'master' into develop
This commit is contained in:
commit
7266e673ac
12 changed files with 34 additions and 19 deletions
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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')
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
0
frappe/patches/v8_10/__init__.py
Normal file
0
frappe/patches/v8_10/__init__.py
Normal 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'""");
|
||||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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())
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue