浏览代码

Merge branch 'develop'

version-14
Nabin Hait 8 年前
父节点
当前提交
12ad26af81
共有 10 个文件被更改,包括 66 次插入23 次删除
  1. +1
    -1
      frappe/__init__.py
  2. +1
    -1
      frappe/boot.py
  3. +4
    -0
      frappe/core/page/user_permissions/user_permissions.js
  4. +33
    -1
      frappe/desk/doctype/note/note.json
  5. +3
    -2
      frappe/desk/page/chat/chat.py
  6. +5
    -0
      frappe/installer.py
  7. +12
    -7
      frappe/public/js/frappe/desk.js
  8. +2
    -8
      frappe/public/js/frappe/form/control.js
  9. +2
    -2
      frappe/public/js/frappe/list/list_sidebar.js
  10. +3
    -1
      frappe/public/js/frappe/views/gantt/gantt_view.js

+ 1
- 1
frappe/__init__.py 查看文件

@@ -13,7 +13,7 @@ import os, sys, importlib, inspect, json
from .exceptions import * from .exceptions import *
from .utils.jinja import get_jenv, get_template, render_template from .utils.jinja import get_jenv, get_template, render_template


__version__ = '8.0.16'
__version__ = '8.0.17'
__title__ = "Frappe Framework" __title__ = "Frappe Framework"


local = Local() local = Local()


+ 1
- 1
frappe/boot.py 查看文件

@@ -233,7 +233,7 @@ def load_print_css(bootinfo, print_settings):
bootinfo.print_css = frappe.get_attr("frappe.www.print.get_print_style")(print_settings.print_style or "Modern", for_legacy=True) bootinfo.print_css = frappe.get_attr("frappe.www.print.get_print_style")(print_settings.print_style or "Modern", for_legacy=True)


def get_unseen_notes(): def get_unseen_notes():
return frappe.db.sql('''select name, title, content from tabNote where notify_on_login=1
return frappe.db.sql('''select name, title, content, notify_on_every_login from tabNote where notify_on_login=1
and expire_notification_on > %s and %s not in and expire_notification_on > %s and %s not in
(select user from `tabNote Seen By` nsb (select user from `tabNote Seen By` nsb
where nsb.parent=tabNote.name)''', (frappe.utils.now(), frappe.session.user), as_dict=True) where nsb.parent=tabNote.name)''', (frappe.utils.now(), frappe.session.user), as_dict=True)

+ 4
- 0
frappe/core/page/user_permissions/user_permissions.js 查看文件

@@ -328,6 +328,10 @@ frappe.UserPermissions = Class.extend({
} }


d.fields_dict["defvalue"].get_query = function(txt) { d.fields_dict["defvalue"].get_query = function(txt) {
if(!d.get_value("defkey")) {
frappe.throw(__("Please select Document Type"));
}

return { return {
doctype: d.get_value("defkey") doctype: d.get_value("defkey")
} }


+ 33
- 1
frappe/desk/doctype/note/note.json 查看文件

@@ -97,6 +97,38 @@
"search_index": 0, "search_index": 0,
"set_only_once": 0, "set_only_once": 0,
"unique": 0 "unique": 0
},
{
"allow_on_submit": 0,
"bold": 1,
"collapsible": 0,
"columns": 0,
"default": "0",
"depends_on": "notify_on_login",
"description": "If enabled, users will be notified every time they login. If not enabled, users will only be notified once.",
"fieldname": "notify_on_every_login",
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Notify Users On Every Login",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
}, },
{ {
"allow_on_submit": 0, "allow_on_submit": 0,
@@ -262,4 +294,4 @@
"sort_order": "ASC", "sort_order": "ASC",
"track_changes": 1, "track_changes": 1,
"track_seen": 0 "track_seen": 0
}
}

+ 3
- 2
frappe/desk/page/chat/chat.py 查看文件

@@ -53,12 +53,13 @@ def get_list(arg=None):
limit %(start)s, %(page_length)s""".format(fields), limit %(start)s, %(page_length)s""".format(fields),
frappe.local.form_dict, as_dict=1) frappe.local.form_dict, as_dict=1)
else: else:
return frappe.db.sql("""select * from `tabCommunication`
return frappe.db.sql("""select {0} from `tabCommunication`
where where
communication_type in ('Chat', 'Notification') communication_type in ('Chat', 'Notification')
and comment_type != 'Bot'
and reference_doctype ='User' and reference_doctype ='User'
and ((owner=%(contact)s and reference_name=%(user)s) and ((owner=%(contact)s and reference_name=%(user)s)
or (owner=%(contact)s and reference_name=%(contact)s))
or (owner=%(user)s and reference_name=%(contact)s))
order by creation desc order by creation desc
limit %(start)s, %(page_length)s""".format(fields), limit %(start)s, %(page_length)s""".format(fields),
frappe.local.form_dict, as_dict=1) frappe.local.form_dict, as_dict=1)


+ 5
- 0
frappe/installer.py 查看文件

@@ -39,6 +39,11 @@ def install_db(root_login="root", root_password=None, db_name=None, source_sql=N
frappe.connect(db_name=db_name) frappe.connect(db_name=db_name)
check_if_ready_for_barracuda() check_if_ready_for_barracuda()
import_db_from_sql(source_sql, verbose) import_db_from_sql(source_sql, verbose)
if not 'tabDefaultValue' in frappe.db.get_tables():
print '''Database not installed, this can due to lack of permission, or that the database name exists.
Check your mysql root password, or use --force to reinstall'''
sys.exit(1)

remove_missing_apps() remove_missing_apps()


create_auth_table() create_auth_table()


+ 12
- 7
frappe/public/js/frappe/desk.js 查看文件

@@ -434,17 +434,22 @@ frappe.Application = Class.extend({
var me = this; var me = this;
if(frappe.boot.notes.length) { if(frappe.boot.notes.length) {
frappe.boot.notes.forEach(function(note) { frappe.boot.notes.forEach(function(note) {
if(!note.seen) {
if(!note.seen || note.notify_on_every_login) {
var d = frappe.msgprint({message:note.content, title:note.title}); var d = frappe.msgprint({message:note.content, title:note.title});
d.keep_open = true; d.keep_open = true;
d.custom_onhide = function() { d.custom_onhide = function() {
note.seen = true; note.seen = true;
frappe.call({
method: "frappe.desk.doctype.note.note.mark_as_seen",
args: {
note: note.name
}
});

// Mark note as read if the Notify On Every Login flag is not set
if (!note.notify_on_every_login) {
frappe.call({
method: "frappe.desk.doctype.note.note.mark_as_seen",
args: {
note: note.name
}
});
}
// next note // next note
me.show_notes(); me.show_notes();




+ 2
- 8
frappe/public/js/frappe/form/control.js 查看文件

@@ -1806,15 +1806,9 @@ frappe.ui.form.ControlTextEditor = frappe.ui.form.ControlCode.extend({
} }
} else { } else {
this.upload_options.on_attach = function(fileobj, dataurl) { this.upload_options.on_attach = function(fileobj, dataurl) {
me.editor.summernote('insertImage', dataurl);
me.image_dialog.hide(); me.image_dialog.hide();
me.fileobj = fileobj;
me.dataurl = dataurl;
if(me.on_attach) {
me.on_attach()
}
if(me.df.on_attach) {
me.df.on_attach(fileobj, dataurl);
}
frappe.hide_progress();
} }
} }
}, },


+ 2
- 2
frappe/public/js/frappe/list/list_sidebar.js 查看文件

@@ -90,7 +90,7 @@ frappe.views.ListSidebar = Class.extend({
if(!r.ref_doctype || r.ref_doctype==me.doctype) { if(!r.ref_doctype || r.ref_doctype==me.doctype) {
var report_type = r.report_type==='Report Builder' var report_type = r.report_type==='Report Builder'
? 'Report/' + r.ref_doctype : 'query-report'; ? 'Report/' + r.ref_doctype : 'query-report';
var route = r.route || report_type + '/' + r.title;
var route = r.route || report_type + '/' + (r.title || r.name);


if(added.indexOf(route)===-1) { if(added.indexOf(route)===-1) {
// don't repeat // don't repeat
@@ -102,7 +102,7 @@ frappe.views.ListSidebar = Class.extend({
} }


$('<li><a href="#'+ route + '">' $('<li><a href="#'+ route + '">'
+ __(r.title)+'</a></li>').appendTo(dropdown);
+ __(r.title || r.name)+'</a></li>').appendTo(dropdown);
} }
} }
}); });


+ 3
- 1
frappe/public/js/frappe/views/gantt/gantt_view.js 查看文件

@@ -107,7 +107,9 @@ frappe.views.GanttView = frappe.views.ListRenderer.extend({
var $dropdown = $(dropdown) var $dropdown = $(dropdown)
$dropdown.find(".dropdown-menu") $dropdown.find(".dropdown-menu")
.append(dropdown_list); .append(dropdown_list);
me.list_view.$page.find(`[data-list-renderer='Gantt'] .list-row-right`).css("margin-right", "15px").html($dropdown)
me.list_view.$page
.find(`[data-list-renderer='Gantt'] > .list-row-right`)
.css("margin-right", "15px").html($dropdown)
$dropdown.on("click", ".option", function() { $dropdown.on("click", ".option", function() {
var mode = $(this).data('value'); var mode = $(this).data('value');
me.gantt.change_view_mode(mode); me.gantt.change_view_mode(mode);


正在加载...
取消
保存