From 86202028db8c8671e0bc280bf28494b4f5deaea1 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Sat, 15 Apr 2017 17:14:43 +0530 Subject: [PATCH 1/8] [fix] chat messages --- frappe/desk/page/chat/chat.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/frappe/desk/page/chat/chat.py b/frappe/desk/page/chat/chat.py index eeb49391d5..a0ea8b7393 100644 --- a/frappe/desk/page/chat/chat.py +++ b/frappe/desk/page/chat/chat.py @@ -53,12 +53,13 @@ def get_list(arg=None): limit %(start)s, %(page_length)s""".format(fields), frappe.local.form_dict, as_dict=1) else: - return frappe.db.sql("""select * from `tabCommunication` + return frappe.db.sql("""select {0} from `tabCommunication` where communication_type in ('Chat', 'Notification') + and comment_type != 'Bot' and reference_doctype ='User' 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 limit %(start)s, %(page_length)s""".format(fields), frappe.local.form_dict, as_dict=1) From dae1265f9fccac868594e5cdc53befbb1e571fdf Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Mon, 17 Apr 2017 12:58:56 +0530 Subject: [PATCH 2/8] [minor] better error message for failed site --- frappe/installer.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/frappe/installer.py b/frappe/installer.py index d3c4296c65..22e38d476b 100755 --- a/frappe/installer.py +++ b/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) check_if_ready_for_barracuda() 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() create_auth_table() From 8e46c5f8f9952bac3a868f97fea10d87311f2928 Mon Sep 17 00:00:00 2001 From: mbauskar Date: Mon, 17 Apr 2017 08:21:12 +0530 Subject: [PATCH 3/8] [minor] check document type in get_query for user permissions --- frappe/core/page/user_permissions/user_permissions.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/frappe/core/page/user_permissions/user_permissions.js b/frappe/core/page/user_permissions/user_permissions.js index 4922afe817..a23e3aa0a3 100644 --- a/frappe/core/page/user_permissions/user_permissions.js +++ b/frappe/core/page/user_permissions/user_permissions.js @@ -328,6 +328,10 @@ frappe.UserPermissions = Class.extend({ } d.fields_dict["defvalue"].get_query = function(txt) { + if(!d.get_value("defkey")) { + frappe.throw(__("Please select Document Type")); + } + return { doctype: d.get_value("defkey") } From 358f8395e1f57e1f187ffafe0227cf5c96d398a0 Mon Sep 17 00:00:00 2001 From: Faris Ansari Date: Mon, 17 Apr 2017 11:38:50 +0530 Subject: [PATCH 4/8] [minor] Gantt view dropdown - frappe/erpnext#8234 --- frappe/public/js/frappe/views/gantt/gantt_view.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/frappe/public/js/frappe/views/gantt/gantt_view.js b/frappe/public/js/frappe/views/gantt/gantt_view.js index 207d43adaa..f7b7f54ed3 100644 --- a/frappe/public/js/frappe/views/gantt/gantt_view.js +++ b/frappe/public/js/frappe/views/gantt/gantt_view.js @@ -107,7 +107,9 @@ frappe.views.GanttView = frappe.views.ListRenderer.extend({ var $dropdown = $(dropdown) $dropdown.find(".dropdown-menu") .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() { var mode = $(this).data('value'); me.gantt.change_view_mode(mode); From 21e76b91417506469689686693c5b5bb55b18e78 Mon Sep 17 00:00:00 2001 From: Rohit Waghchaure Date: Mon, 17 Apr 2017 11:48:30 +0530 Subject: [PATCH 5/8] [fix] List sidebar for report --- frappe/public/js/frappe/list/list_sidebar.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frappe/public/js/frappe/list/list_sidebar.js b/frappe/public/js/frappe/list/list_sidebar.js index 925fdae84b..58ce23209d 100644 --- a/frappe/public/js/frappe/list/list_sidebar.js +++ b/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) { var report_type = r.report_type==='Report Builder' ? '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) { // don't repeat @@ -102,7 +102,7 @@ frappe.views.ListSidebar = Class.extend({ } $('
  • ' - + __(r.title)+'
  • ').appendTo(dropdown); + + __(r.title || r.name)+'').appendTo(dropdown); } } }); From ff2e37135dc49cea518ad3368d81df52a6db5e59 Mon Sep 17 00:00:00 2001 From: Javier Wong Date: Mon, 17 Apr 2017 17:13:59 +0800 Subject: [PATCH 6/8] [Enhancement] Allow Notes (announcements) to be notified every time a user logins (#3094) * [Enhancement] Allow Notes (announcements) to be notified every time a user logins. * [Fix] Add Notify on Login flag in frappe.boot.notes * Patch Doctype Notes to notify once for all existing notes * Added newline to end of patch_notes_notify_once file * [fix] Changed Notes Notify Once flag to Notify On Every Login * Update note.json * [fix] Removed frappe/patches/v7_2/patch_notes_notify_on_every_login.py --- frappe/boot.py | 2 +- frappe/desk/doctype/note/note.json | 34 +++++++++++++++++++++++++++++- frappe/public/js/frappe/desk.js | 19 +++++++++++------ 3 files changed, 46 insertions(+), 9 deletions(-) diff --git a/frappe/boot.py b/frappe/boot.py index a7edb9b20f..b5d0acce01 100644 --- a/frappe/boot.py +++ b/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) 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 (select user from `tabNote Seen By` nsb where nsb.parent=tabNote.name)''', (frappe.utils.now(), frappe.session.user), as_dict=True) \ No newline at end of file diff --git a/frappe/desk/doctype/note/note.json b/frappe/desk/doctype/note/note.json index 16ae2239aa..18ca0e6684 100644 --- a/frappe/desk/doctype/note/note.json +++ b/frappe/desk/doctype/note/note.json @@ -97,6 +97,38 @@ "search_index": 0, "set_only_once": 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, @@ -262,4 +294,4 @@ "sort_order": "ASC", "track_changes": 1, "track_seen": 0 -} \ No newline at end of file +} diff --git a/frappe/public/js/frappe/desk.js b/frappe/public/js/frappe/desk.js index 90d361cd45..9c3e88a513 100644 --- a/frappe/public/js/frappe/desk.js +++ b/frappe/public/js/frappe/desk.js @@ -434,17 +434,22 @@ frappe.Application = Class.extend({ var me = this; if(frappe.boot.notes.length) { 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}); d.keep_open = true; d.custom_onhide = function() { 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 me.show_notes(); From 2e8b2eb756a9c8bdfd7ce90a057a97c5dfa81479 Mon Sep 17 00:00:00 2001 From: Prateeksha Singh Date: Mon, 17 Apr 2017 15:05:34 +0530 Subject: [PATCH 7/8] [minor] note image modal in pop-up (#3095) --- frappe/public/js/frappe/form/control.js | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/frappe/public/js/frappe/form/control.js b/frappe/public/js/frappe/form/control.js index fe153323f3..21d3f3afe6 100755 --- a/frappe/public/js/frappe/form/control.js +++ b/frappe/public/js/frappe/form/control.js @@ -1806,15 +1806,9 @@ frappe.ui.form.ControlTextEditor = frappe.ui.form.ControlCode.extend({ } } else { this.upload_options.on_attach = function(fileobj, dataurl) { + me.editor.summernote('insertImage', dataurl); 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(); } } }, From 82806c5b31f40d30a7f1a1af5d5053f7709418d6 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Mon, 17 Apr 2017 15:56:58 +0600 Subject: [PATCH 8/8] bumped to version 8.0.17 --- frappe/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/__init__.py b/frappe/__init__.py index fab3a599c4..12a2540ed5 100644 --- a/frappe/__init__.py +++ b/frappe/__init__.py @@ -13,7 +13,7 @@ import os, sys, importlib, inspect, json from .exceptions import * from .utils.jinja import get_jenv, get_template, render_template -__version__ = '8.0.16' +__version__ = '8.0.17' __title__ = "Frappe Framework" local = Local()