Merge branch 'hotfix'

This commit is contained in:
Sagar Vora 2019-02-05 18:23:19 +05:30
commit 492252a5b3
14 changed files with 40 additions and 17 deletions

View file

@ -23,7 +23,7 @@ if sys.version[0] == '2':
reload(sys)
sys.setdefaultencoding("utf-8")
__version__ = '11.1.3'
__version__ = '11.1.4'
__title__ = "Frappe Framework"
local = Local()

View file

@ -16,7 +16,7 @@ from frappe.utils.csvutils import getlink
from frappe.utils.dateutils import parse_date
from frappe.utils.file_manager import save_url
from frappe.utils import cint, cstr, flt, getdate, get_datetime, get_url, get_url_to_form
from frappe.utils import cint, cstr, flt, getdate, get_datetime, get_url, get_absolute_url
from six import text_type, string_types
@ -411,16 +411,16 @@ def upload(rows = None, submit_after_import=None, ignore_encoding_errors=False,
# log errors
if parentfield:
log(**{"row": doc.idx, "title": 'Inserted row for "%s"' % (as_link(parenttype, doc.parent)),
"link": get_url_to_form(parenttype, doc.parent), "message": 'Document successfully saved', "indicator": "green"})
"link": get_absolute_url(parenttype, doc.parent), "message": 'Document successfully saved', "indicator": "green"})
elif submit_after_import:
log(**{"row": row_idx + 1, "title":'Submitted row for "%s"' % (as_link(doc.doctype, doc.name)),
"message": "Document successfully submitted", "link": get_url_to_form(doc.doctype, doc.name), "indicator": "blue"})
"message": "Document successfully submitted", "link": get_absolute_url(doc.doctype, doc.name), "indicator": "blue"})
elif original:
log(**{"row": row_idx + 1,"title":'Updated row for "%s"' % (as_link(doc.doctype, doc.name)),
"message": "Document successfully updated", "link": get_url_to_form(doc.doctype, doc.name), "indicator": "green"})
"message": "Document successfully updated", "link": get_absolute_url(doc.doctype, doc.name), "indicator": "green"})
elif not update_only:
log(**{"row": row_idx + 1, "title":'Inserted row for "%s"' % (as_link(doc.doctype, doc.name)),
"message": "Document successfully saved", "link": get_url_to_form(doc.doctype, doc.name), "indicator": "green"})
"message": "Document successfully saved", "link": get_absolute_url(doc.doctype, doc.name), "indicator": "green"})
else:
log(**{"row": row_idx + 1, "title":'Ignored row for %s' % (row[1]), "link": None,
"message": "Document updation ignored", "indicator": "orange"})
@ -437,7 +437,7 @@ def upload(rows = None, submit_after_import=None, ignore_encoding_errors=False,
error_trace = frappe.get_traceback()
if error_trace:
error_log_doc = frappe.log_error(error_trace)
error_link = get_url_to_form("Error Log", error_log_doc.name)
error_link = get_absolute_url("Error Log", error_log_doc.name)
else:
error_link = None

View file

@ -150,6 +150,8 @@ class Report(Document):
if params.get('sort_by'):
order_by = _format(params.get('sort_by').split('.')) + ' ' + params.get('sort_order')
elif params.get('order_by'):
order_by = params.get('order_by')
else:
order_by = _format([self.ref_doctype, 'modified']) + ' desc'

View file

@ -358,6 +358,9 @@ class User(Document):
where `%s`=%s""" % \
(tab[0], field, '%s', field, '%s'), (new_name, old_name))
if frappe.db.exists("Chat Profile", old_name):
frappe.rename_doc("Chat Profile", old_name, new_name, force=True)
# set email
frappe.db.sql("""\
update `tabUser` set email=%s

View file

@ -214,7 +214,7 @@ def delete_items():
"""delete selected items"""
import json
il = sorted(json.loads(frappe.form_dict.get('items')), reverse=True, key=frappe.safe_decode)
il = sorted(json.loads(frappe.form_dict.get('items')), reverse=True)
doctype = frappe.form_dict.get('doctype')
failed = []

View file

@ -547,10 +547,20 @@ class BaseDocument(object):
# single doctype value type is mediumtext
return
column_types_to_check_length = ('varchar', 'int', 'bigint')
for fieldname, value in iteritems(self.get_valid_dict()):
df = self.meta.get_field(fieldname)
if df and df.fieldtype in type_map and type_map[df.fieldtype][0]=="varchar":
max_length = cint(df.get("length")) or cint(varchar_len)
if not df or df.fieldtype == 'Check':
# skip standard fields and Check fields
continue
column_type = type_map[df.fieldtype][0] or None
default_column_max_length = type_map[df.fieldtype][1] or None
if df and df.fieldtype in type_map and column_type in column_types_to_check_length:
max_length = cint(df.get("length")) or cint(default_column_max_length)
if len(cstr(value)) > max_length:
if self.parentfield and self.idx:

View file

@ -684,7 +684,7 @@ export default class Grid {
data.push(["------"]);
$.each(frappe.get_meta(me.df.options).fields, function(i, df) {
// don't include the read-only field in the template
if(frappe.model.is_value_type(df.fieldtype) && !df.read_only) {
if(frappe.model.is_value_type(df.fieldtype)) {
data[1].push(df.label);
data[2].push(df.fieldname);
let description = (df.description || "") + ' ';

View file

@ -801,7 +801,9 @@ frappe.views.ReportView = frappe.ui.BaseList.extend({
});
this.page.add_menu_item(__("Delete"), function() {
var delete_list = $.map(me.get_checked_items(), function(d) { return d.name; });
var delete_list = $.map(me.get_checked_items(), function(d) {
return d.name.toString();
});
if(!delete_list.length)
return;
if(frappe.confirm(__("This is PERMANENT action and you cannot undo. Continue?"),

View file

@ -32,6 +32,7 @@
frappe.ready_events.push(fn);
}
window.dev_server = {{ dev_server }};
window.socketio_port = {{ frappe.socketio_port }};
</script>
</head>
{% block body %}

View file

@ -1,4 +1,4 @@
{% if blog_title and not (frappe.local.form_dict.txt or frappe.local.form_dict.by) %}
{% if blog_title and not (form_dict.txt or form_dict.by) %}
<div class="page-hero border-bottom">
<div class="container">
<h1 class="page-title">

View file

@ -745,6 +745,9 @@ def get_link_to_form(doctype, name, label=None):
return """<a href="{0}">{1}</a>""".format(get_url_to_form(doctype, name), label)
def get_absolute_url(doctype, name):
return "desk#Form/{0}/{1}".format(quoted(doctype), quoted(name))
def get_url_to_form(doctype, name):
return get_url(uri = "desk#Form/{0}/{1}".format(quoted(doctype), quoted(name)))

View file

@ -311,7 +311,7 @@ def sync_global_search():
:return:
"""
while frappe.cache().llen('global_search_queue') > 0:
value = json.loads(frappe.cache().lpop('global_search_queue'))
value = json.loads(frappe.cache().lpop('global_search_queue').decode('utf-8'))
sync_value(value)
def sync_value(value):

View file

@ -56,7 +56,7 @@ def render_template(template, context, is_path=None, safe_render=True):
:param template: path or HTML containing the jinja template
:param context: dict of properties to pass to the template
:param is_path: (optional) assert that the `template` parameter is a path
:param safe_render: (optional) prevent server side scripting via jinja templating
:param safe_render: (optional) prevent server side scripting via jinja templating
'''
from frappe import throw
@ -117,7 +117,6 @@ def get_allowed_functions_for_jenv():
'date_format': date_format,
"format_date": frappe.utils.data.global_date_format,
"form_dict": getattr(frappe.local, 'form_dict', {}),
"local": frappe.local,
"get_hooks": frappe.get_hooks,
"get_meta": frappe.get_meta,
"get_doc": frappe.get_doc,
@ -130,10 +129,12 @@ def get_allowed_functions_for_jenv():
"get_gravatar": frappe.utils.get_gravatar_url,
"full_name": frappe.local.session.data.full_name if getattr(frappe.local, "session", None) else "Guest",
"render_template": frappe.render_template,
"request": getattr(frappe.local, 'request', {}),
'session': {
'user': user,
'csrf_token': frappe.local.session.data.csrf_token if getattr(frappe.local, "session", None) else ''
},
"socketio_port": frappe.conf.socketio_port,
},
'style': {
'border_color': '#d1d8dd'

View file

@ -427,5 +427,6 @@ frappe.ready(function() {
});
}
}
})
});
frappe.socketio.init(window.socketio_port);
});