Merge branch 'hotfix'
This commit is contained in:
commit
492252a5b3
14 changed files with 40 additions and 17 deletions
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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 = []
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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 || "") + ' ';
|
||||
|
|
|
|||
|
|
@ -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?"),
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@
|
|||
frappe.ready_events.push(fn);
|
||||
}
|
||||
window.dev_server = {{ dev_server }};
|
||||
window.socketio_port = {{ frappe.socketio_port }};
|
||||
</script>
|
||||
</head>
|
||||
{% block body %}
|
||||
|
|
|
|||
|
|
@ -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">
|
||||
|
|
|
|||
|
|
@ -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)))
|
||||
|
||||
|
|
|
|||
|
|
@ -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):
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -427,5 +427,6 @@ frappe.ready(function() {
|
|||
});
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
||||
frappe.socketio.init(window.socketio_port);
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue